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

新手上路,请多包涵

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

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

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

它尝试了这个,但它不起作用:

 msbuild /p:DefineConstants="ACTIVATE=1"

任何想法?

原文由 acemtp 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 732
2 个回答

答案是:你不能

原文由 acemtp 发布,翻译遵循 CC BY-SA 2.5 许可协议

我已经厌倦了在不修改解决方案或项目文件的情况下尝试这样做,所以我想出了以下内容:

  • 创建空文件作为构建的一部分,例如 feature_flag.h
  • #if FEATURE_FLAG 替换为 #if !__has_include("feature_flag.h")
  • 在构建结束时删除 feature_flag.h

它没有使用#define,但它确实使用了我需要的预处理器。

原文由 tschumann 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题