以下は、通常のVS2010 C++プロジェクトのものです。私はPreprocessorDefinitions
を編集する場合msbuildタスクのタスクプロパティとしてPreProcessorDefinitionsを設定する方法
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
私はプリプロセッサで使用される定義を設定することができます。私は、私は、次の
<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
iがProperties="PreprocessorDefinitions=THISGETSSETBUTDOESNOTHING"
を介して設定された値が含まれていますが、私は私をコントロールすることができないというメッセージを介して見ることができますしかしなど#ifdef
を経由して私のコードで
これを見ることができます私は通常のセットアップを使用している場合など#ifdef
を使用して構築し、フィールドが実際に空白で、私が使用して#ifdef
などを自分のビルドを制御するためにこれらのキーのいずれかを使用することができますが、予想<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
が含まれていません<Message Text="PreprocessorDefinitions: $(PreprocessorDefinitions)"
を使用して出力PreprocessorDefinitions
にしてみてください
- なぜですか?
Properties
という要素を使用してVS2010 C++プロジェクトのプリプロセッサ定義を渡すにはどうすればよいですか?
これは私の2017バージョンでは動作していませんが、ClCompileセクションはありません。 – Pysis
まだ私のために働いています。それはC++プロジェクトですか? –
私はしばしばこのMSVC/VS世界では動作しません..、もっとEclipse。私は新しいフォルダと空のcppファイルを追加しましたが、ビルドパスのように、まだ認識されていないと思っていました。そして/またはC++の 'ファセット'は '集約'プロジェクトファイルにありませんでした。このエラーがxkeycheckエラーの原因となった独自のプリプロセッサステートメントを定義している個々のサブプロジェクトのvcxprojファイルにあると分かったら、これらのプロジェクトのそれぞれが編集するものであることがわかりました。 – Pysis