gpt4 book ai didi

c++ - msbuild:在命令行中设置特定的预处理器#define

转载 作者:IT老高 更新时间:2023-10-28 21:54:41 30 4
gpt4 key购买 nike

在 C++ 文件中,我有这样的代码:

#if ACTIVATE
# pragma message( "Activated" )
#else
# pragma message( "Not Activated")
#endif

我想使用 msbuild 命令行将此 ACTIVE 定义设置为 1。

试过了,还是不行:

msbuild /p:DefineConstants="ACTIVATE=1"

有什么想法吗?

最佳答案

我参加聚会有点晚了(只有 4 年左右),但我只需要在一个项目中解决这个问题,并在寻找解决方案时偶然发现了这个问题。我们的解决方案是使用其中定义了 /D 的环境变量,并结合 Visual Studio 中的 Additional Options 框。

  1. 在 Visual Studio 中,将环境变量宏 $(ExternalCompilerOptions) 添加到项目选项->C/C++->命令行下的附加选项(记住调试和发布配置)
  2. 在调用 msbuild 之前设置环境变量。使用 /D 编译器选项来定义你的宏
    c:\> set ExternalCompilerOptions=/DFOO /DBAR 
c:\> msbuild

第 1 项最终在 vcxproj 文件中看起来像这样:

    <ClCompile>
<AdditionalOptions>$(ExternalCompilerOptions) ... </AdditionalOptions>
</ClCompile>

这适用于 VS 2010。我们从各种构建脚本驱动 msbuild,因此环境变量 ugliness 被隐藏了一点。请注意,当您需要将定义设置为特定值( /DACTIVATE=1 )时,我没有测试这是否有效。我认为它会起作用,但我担心那里有多个 '='。

H^2

关于c++ - msbuild:在命令行中设置特定的预处理器#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/166474/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com