これらのマクロの大部分は、すべての VS2010 プロジェクトに含まれる MSBuild ターゲット ファイルで定義されています。プロジェクト ファイルのどこかに、おそらく一番下近くに、次のような行があります。
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
パス変数のチェーンをたどると、最終的に を含むフォルダが見つかります。このフォルダには、次のMicrosoft.Cpp.targets
ものが含まれます。
<Import Project="Microsoft.Common.targets" />
このファイルには、次のメモがあります。
この .TARGETS ファイルを使用する前に、メイン プロジェクト ファイルでいくつかのプロパティを設定する必要があります。ただし、プロパティが設定されていない場合は、いくつかのデフォルトが選択されます。
OutDir: プロジェクトまたはソリューションの最終的な出力場所を示します。ソリューションを構築するとき、
MSBuild が選択する既定値は、$(OutDir)
明示$(OutputPath)
的に設定されていない場合の既定値です。$(OutputPath)
はプロジェクト ファイルで定義されているため、ターゲット ファイルが含まれる前にそのプロパティを変更すると、 の既定値が変更されます$(OutDir)
。$(OutDir)
またはを使用してmsbuild
コマンド ラインで値を指定することもできます。これ/p:OutDir=bin\DebugElsewhere
により、MSBuild が使用する既定値が上書きされます。(これは、たとえば、ソリューション内のすべてを同じフォルダーにダンプするために TFSBuild が行うことです。)
また、将来の参考のために、残りのマクロのほとんどもこのファイルで定義されています。
<PropertyGroup>
<TargetDir Condition="'$(OutDir)' != ''">$([MSBuild]::Escape($([System.IO.Path]::GetFullPath(`$([System.IO.Path]::Combine(`$(MSBuildProjectDirectory)`, `$(OutDir)`))`))))</TargetDir>
<TargetPath Condition=" '$(TargetPath)' == '' ">$(TargetDir)$(TargetFileName)</TargetPath>
<ProjectDir Condition=" '$(ProjectDir)' == '' ">$(MSBuildProjectDirectory)\</ProjectDir>
<ProjectPath Condition=" '$(ProjectPath)' == '' ">$(ProjectDir)$(ProjectFileName)</ProjectPath>
.
.
.
</PropertyGroup>