Visual C++ が Visual Studio から (vcxproj) ファイルをビルドするか、devenv (sln のビルド) を使用してビルドすると、BuildLog.Path 項目で指定されたファイルに vcxproj のビルドからログが取得されます。この項目の既定値は $(IntDir)\$(MSBuildProjectName).log です。
実際、この機能は、プロジェクトごとのビルド後の分析に非常に役立ちます。
msbuild.exe からビルドするだけで、この動作をシミュレートしたいと思います。
現在 devenv を使用できない重大なビルド自動化の理由があります (私が知る限り、sln なしで devenv によって vcxproj をビルドすることはできません)。
この問題を次のように解決しようとしました。
- BuildLog.Path の値を決定して返すカスタム ターゲットの作成
- 次に、ファイルロガーを使用してログファイルを作成する引数を含むmsbuildコマンドラインでタスクExecを実行します
問題はそれが機能しないことです!
デフォルトが次のように指定されているという興味深いことがあります。
<ItemDefinitionGroup>
<BuildLog>
<Path>$(IntDir)\$(MSBuildProjectName).log</Path>
</BuildLog>
</ItemDefinitionGroup>
私が正しく理解した場合、これは各 BuildLog アイテムのメタデータ パスを指定します。
デフォルトでは、BuildLog アイテムはありません (BuildLog アイテムの vcxproj に Include がないため)。
誰かがこの問題の解決策を持っているか、それを解決する方法を説明できますか?
- BuildLog.Path メタデータを決定するか、
- vcxprojで指定された、またはpropsファイルから継承されたログファイルへのログファイルを使用して、msbuildだけでvcxprojファイルをビルドします