【问题标题】:devenv and #definedevenv 和#define
【发布时间】:2011-09-17 09:50:15
【问题描述】:

我正在使用 cmd devenv 构建一些项目。

对于某些项目,我想从命令行#define。

有没有办法#define 使用 cmd 和 devenv?我不想创建新配置。

【问题讨论】:

  • 可以在stackoverflow.com/questions/1783158/… 找到“更好”的答案...您可以使用您希望 cl.exe 在构建过程中使用的任何额外命令行选项设置环境变量 CL,例如这个:设置 CL=/DSOMETHING=1

标签: c++ visual-studio-2010 command-line c-preprocessor devenv


【解决方案1】:

许多编译器允许您在命令行设置定义宏。常用选项是“-D”。

检查您的编译器文档以了解确切的语法。

编辑 1: Visual Studio 编译器具有配置选项来指定 IDE 中的宏(使用“-D”开关传递给编译器。)

【讨论】:

    【解决方案2】:

    您不能使用 devenv.exe 执行此操作,请参阅 Command Line Options。但是,您可以使用编译器 cl.exe 执行此操作,但是您不能重用项目文件中的所有设置。

    【讨论】:

    • 我尝试使用 msbuild 使用 /p:Definition="TEST" 但它没有工作它尝试 /p:DefineConstants="TEST" 也没有工作我做错了什么?我正在编译一个包含 3 个项目的解决方案
    【解决方案3】:

    你可以这样做:

    • $(AdditionalPreprocessorDefinitions) 添加到项目的预处理器定义列表中。之后,它们可能看起来像WIN32;_DEBUG;_CONSOLE;$(AdditionalPreprocessorDefinitions);%(PreprocessorDefinitions)

    • 使用msbuild 而不是devenv 开始构建过程

    • 通过将/p:AdditionalPreprocessorDefinitions="SOMEDEF;ANOTHERDEF" 添加到命令行来指定额外的预处理器定义。

    请注意,我选择 AdditionalPreprocessorDefinitions 只是为了清楚起见,您可以选择更短的名称。这仅适用于 VC2010,因为在早期版本中,VC++ 项目不是使用 msbuild 构建的。

    【讨论】:

    • 我尝试使用 msbuild 使用 /p:Definition="TEST" 但它没有工作它尝试 /p:DefineConstants="TEST" 也没有工作我做错了什么?我正在编译一个包含 3 个项目的解决方案
    • 您是否按照上面列表的第 1 步进行操作? DefineConstants 仅适用于 C#,在此 C++ 解决方案中,您必须编辑项目并插入 $(VariableName);进入预处理器定义字符串。
    • 是的,我尝试将 $(Flavors) 添加到预处理器定义中,现在它看起来:WIN32;NDEBUG;_WINDOWS;%(Flavors);%(PreprocessorDefinitions) 我使用命令 msbuild project.sln / p:Flavors="Test" /t:rebuild 还是不行
    • @alejo 尝试用 $(Flavors) 替换 %(Flavors)
    • 现在一切正常,这是一个非常严重的错误,感谢您的帮助
    猜你喜欢
    • 2010-12-19
    • 2010-12-25
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2011-01-28
    相关资源
    最近更新 更多