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

时间:2010-09-06 09:42:54

标签: qt qt-creator

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

6 个答案:

答案 0 :(得分:37)

取决于: - )

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

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

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

最后,您可以将#define SOME_DEFINE值留置到头文件中并包含它。这适用于所有类型的项目: - )

答案 1 :(得分:17)

来自QT Documentation

  

定义在.config文件中指定。 .config文件是   常规C ++文件,在它们存在时添加到所有源文件之前   解析。仅使用.config文件添加行,如示例中所示   下面:

#define NAME value

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

对于我的项目,它会使索引器识别此定义项目范围并更改自动完成以反映此情况。

答案 2 :(得分:6)

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

DEFINES += "VERSION=\"\\\"0.1.0\\\"\""

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

答案 3 :(得分:2)

我认为最初的答案很好,但是它们要求您手动管理配置,而有办法让IDE为您自动管理 基于此是否已选择发布 debug 配置。

此位可能是多余的,但请注意,只有在使用IDE构建时,这对您才有效。显然,如果不是这种情况,您将需要一个不同的解决方案。

的步骤

由于图片胜过千言万语,以下是使用Qt Creator 4.3.1为调试版本定义调试宏的示例:

  1. 确保已选择调试配置;
  2. Run Configurations

    1. 转到左侧菜单中的项目部分;
    2. 转到构建部分
    3. Projects >> Build

      1. 构建步骤下,查找其他参数输入框;
      2. 输入您的宏定义(例如代码中DEBUG的{​​{1}};我的情况是#ifdef DEBUG
      3. Additional Arguments

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

        结果

        选择 debug 配置

        Debug Config

        选择 release 配置:

        Release Config

答案 4 :(得分:1)

您可以在QtCreator的项目设置中定义一些PREPROCESSOR。我这里没有QtCreator,但我记得有一个项目配置选项卡。

答案 5 :(得分:0)

@Tobias Hunger的回答的第一个建议对我有用。我在.pro文件中这样做:

DEFINE += KEY=value

直到我将其更改为:

DEFINES += KEY=value

也就是说,如果您想从命令行执行所有操作,此处描述了一种几乎混合的解决方案,该解决方案不使用Qt Creator GUI,但使用.pro文件:

https://www.linux.org/threads/c-tutorial-create-qt-applications-without-qtcreator.18409/

使用上面的链接中描述的方法,您可以使用qtcreator -project来生成.pro文件,然后使用notepadvim或其他文本编辑器来添加您刚创建的DEFINES += KEY=value文件的.pro行。然后使用qmake:qmake <your_project>.pro进行Qt预处理,最后只需make来生成可执行文件。

我也听说过从命令行添加qtcreator -D选项的预处理器定义的传说,如下所示: https://doc.qt.io/archives/qt-4.8/qmake-variable-reference.html#defines 但我从未尝试过。

希望有些东西对您有用!您对CLI的热忱令人钦佩。