Sau đây được lấy từ dự án VS2010 C++ thông thường.Cách đặt PreProcessorDefinitions là một nhiệm vụ thích hợp cho tác vụ msbuild
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
Nếu tôi chỉnh sửa PreprocessorDefinitions
tôi có thể đặt định nghĩa được sử dụng bởi bộ tiền xử lý. Tôi có thể thấy điều này trong mã của tôi qua #ifdef
, vv
Tuy nhiên nếu tôi sử dụng như sau
<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>
tôi cũng có thể thấy qua thông điệp rằng PreprocessorDefinitions
chứa giá trị tôi đặt qua Properties="PreprocessorDefinitions=THISGETSSETBUTDOESNOTHING"
nhưng tôi không thể kiểm soát của tôi xây dựng sử dụng #ifdef
, vv Nếu tôi sử dụng một thiết lập thường xuyên và cố gắng ra PreprocessorDefinitions
sử dụng <Message Text="PreprocessorDefinitions: $(PreprocessorDefinitions)"
lĩnh vực này thực sự là trống và không chứa dự kiến <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
mặc dù tôi có thể sử dụng bất kỳ một trong những chìa khóa để kiểm soát xây dựng của tôi sử dụng #ifdef
, vv
- Tại sao lại như vậy?
- Tôi có thể làm gì để vượt qua PreprocessorDefinitions für dự án VS2010 C++ thông qua phần tử
Properties
nhiệm vụ?
Không có điều nào trong số này hoạt động trong phiên bản 2017 của tôi và tôi không có phần ClCompile. – Pysis
Vẫn đang làm việc cho tôi. Nó là một dự án C++? –
Tôi không làm việc trong thế giới này MSVC/VS thường .., thêm Eclipse. Tôi đã thêm một thư mục mới và một tệp cpp trống, nhưng giống như một Đường dẫn Xây dựng, tôi không nghĩ rằng nó đã được nhận diện, và/hoặc khía cạnh C++ 'không nằm trong tệp dự án' tổng hợp '. Một khi tôi nhận ra các lỗi trong các tệp vcxproj tiểu dự án xác định các báo cáo tiền xử lý riêng của chúng đã gây ra lũ lụt của các lỗi xkeycheck xuất hiện, tôi thấy mỗi dự án đó là các chỉnh sửa .. Mặc dù! – Pysis