以下は、通常の VS2010 C++ プロジェクトから取得したものです。
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
編集PreprocessorDefinitionsすると、プリプロセッサで使用される定義を設定できます。これは、コードで#ifdefetcを介して確認できます。
ただし、次を使用する場合
<Target Name="NormalBuild" Condition=" '$(_InvalidConfigurationWarning)' != 'true' " DependsOnTargets="_DetermineManagedStateFromCL;CustomBeforeBuild;$(BuildDependsOn)" Returns="@(ManagedTargetPath)">
<ItemGroup>
<ManagedTargetPath Include="$(TargetPath)" Condition="'$(ManagedAssembly)' == 'true'" />
</ItemGroup>
<Message Text="PreprocessorDefinitions: $(PreprocessorDefinitions)" Importance="High" />
</Target>
<Target Name="TestBuild" Returns="@(ManagedTargetPath)">
<MSBuild Projects="demo.vcxproj" Targets="NormalBuild" Properties="PreprocessorDefinitions=THISGETSSETBUTDOESNOTHING"/>
</Target>
PreprocessorDefinitions設定した値を含むメッセージを介して確認することもできますが、Properties="PreprocessorDefinitions=THISGETSSETBUTDOESNOTHING"ビルドを制御できませんなどを使用してビルドを制御するためのこれらのキーのいずれか。#ifdefPreprocessorDefinitions<Message Text="PreprocessorDefinitions: $(PreprocessorDefinitions)"<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>#ifdef
- 何故ですか?
Propertiestasks要素を介して VS2010 C++ プロジェクトに PreprocessorDefinitions を渡すにはどうすればよいですか?