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

问题描述 投票:32回答:5

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

qt qt-creator
5个回答
16
投票

来自QT Documentation

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

#define NAME value

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

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


37
投票

这取决于:-)

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

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

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

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


6
投票

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

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

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


2
投票

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

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

Steps

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

  1. 确保选择了Debug配置;

Run Configurations

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

Projects >> Build

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

Additional Arguments

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

Results

选择调试配置

Debug Config

选择发布配置:

Release Config


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.