Yim*_*ong 7 c++ msbuild macros visual-c++ c-preprocessor
有没有办法转换这样的东西:
#define ERROR_LOG_LEVEL 5
Run Code Online (Sandbox Code Playgroud)
通过命令行将msbuild传递给它的项目?
msbuild.exe {???}ERROR_LOG_LEVEL=5 target
Run Code Online (Sandbox Code Playgroud)
我已经阅读了对类似问题的回答,看起来答案是否定的,只是想仔细检查以防一些天才找到解决方法.
可以通过将/D选项传递给编译器来定义宏。您可以指定/D使用MSBuild中选择AdditionalOptions的ClCompile:
<ItemDefinitionGroup>
<ClCompile>
<AdditionalOptions>/DERROR_LOG_LEVEL=5 %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
Run Code Online (Sandbox Code Playgroud)
如果您希望能够通过调用msbuild.exe来传递宏的值,则也可以轻松地做到这一点:
<ItemDefinitionGroup Condition="'$(ErrorLogLevel)' != ''">
<ClCompile>
<AdditionalOptions>/DERROR_LOG_LEVEL=$(ErrorLogLevel) %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
Run Code Online (Sandbox Code Playgroud)
msbuild.exe的调用方式为:
msbuild /p:ErrorLogLevel=5 MyProject.vcxproj
Run Code Online (Sandbox Code Playgroud)