如何将预处理defs(宏)添加到qt creator?

Bha*_*aaj 34 qt qt-creator

在Eclipse中,可以使用Paths和Symbols中的Symbols选项为项目指定预处理定义(#ifdef宏).这有助于有效地索引跨平台的代码.有没有选择在Qt创建者中提供这些?

小智 37

这取决于:-)

以下假设您正在使用基于qmake的项目:

首先,您可以添加DEFINES += SOME_DEFINE=value到.pro文件中.这是在创建者内部以及在命令行上构建时,也应该在从.pro文件创建MSVC或XCode项目时显示.

然后,您可以添加DEFINES += SOME_DEFINE=valueQtke调用,Qt Creator将在配置项目时发出.这种情况发生在项目模式,构建设置,QMake步骤中.

最后,您可以将#define SOME_DEFINE值留言放入头文件中并包含它.适用于各种项目:-)

  • +1这可能无法帮助原始海报,但这是谷歌上"qtcreator定义"的热门,我们中的许多人正在使用qmake并在qtcreator中构建.谢谢! (13认同)
  • 将define添加到.pro文件时,您必须在qtcreator中进行清理和重建.希望这个提示可能会在某一天节省10分钟. (2认同)

Gus*_*s E 17

来自QT文档:

定义在.config文件中指定..config文件是一个常规C++文件,在解析它们时会附加到所有源文件.仅使用.config文件添加行,如下例所示:

#define NAME value
Run Code Online (Sandbox Code Playgroud)

也就是说,如果导入名为MyProject的项目,则应在MyProject.config中指定预处理器定义

对于我的项目,它使索引器识别此定义项目范围并更改自动完成以反映这一点.


cod*_*edd 7

我认为最初的答案很好,但它们要求您手动管理您的配置而有一些方法可以让 IDE根据您是否选择了发布调试配置来自动管理它。

这一点可能是多余的,但请注意,只有当您使用 IDE 构建. 显然,如果情况并非如此,您将需要不同的解决方案。

脚步

由于图片值一千字,这里有一个示例,说明如何使用 Qt Creator 4.3.1 为调试构建定义调试宏:

  1. 确保您选择了调试配置;

运行配置

  1. 转到左侧菜单上的“项目”部分;
  2. 转到构建部分

项目 >> 建造

  1. Build Steps 下,查找Additional arguments输入框;
  2. 输入您的宏定义(例如,DEBUG对于#ifdef DEBUG代码中的s;在我的情况下是__CTS_DEBUG__

附加参数

宏现在只会在您使用调试配置时定义;当您选择Release配置(参见步骤 1)时,它将自动变为未定义状态,并且您的条件编译调试代码将被删除,如下图所示,这正是您一直想要的。

结果

随着调试选择配置

调试配置

随着版本选择的配置:

发布配置


Bra*_*don 6

我想在.pro文件中指定一个#define字符串,但我的代码最终得到的字符串内容没有引号.我不得不逃避引号,然后逃脱转义,得到一对引号,一直到我的代码.这是因为qmake剥离了一组转义和一些引号,然后命令行剥离其余部分.这对我有用:

DEFINES += "VERSION=\"\\\"0.1.0\\\"\""
Run Code Online (Sandbox Code Playgroud)

在Windows上,可以在.rc文件中使用此VERSION字符串来创建Windows所需的版本内容以及"关于"菜单的代码.