2010-09-06 1365 views

回答

11

QT Documentation

的定义是在config文件中指定。 .config文件是一个 常规C++文件,它们在分析了 时预先添加到所有源文件中。仅使用config文件中添加行,如下面的例子 :

#define NAME value 

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

指定

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

+0

我没有试过这个。我在Qt没有更多的工作。但我认为从您的答案来看,这可能是正确的。所以接受它现在为别人使用。 – Bharathwaaj 2012-02-22 23:10:36

+3

它的工作原理是正确的。 – 2012-08-11 00:27:03

+1

这个工作,当我做文档说和“只使用.config文件添加行,如下面的例子”。我希望“.config文件是一个普通的C++文件”,这意味着我也可以在那里使用#ifdef/#end/#endif,但会产生奇怪的结果。这是否应该工作? – anr78 2013-05-30 07:57:17

1

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

+0

我找不到在这样的背景下项目配置uration。 – Bharathwaaj 2010-09-06 11:47:03

+0

Tab的名称是“Projects”,您可以通过添加预处理器define来定制编译 – 2010-09-06 12:37:37

+0

我不使用qt创建器进行编译。我用它来建立索引。 – Bharathwaaj 2010-09-09 10:08:32

35

这取决于:-)

是假设你正在使用的qmake基础的项目如下:

首先,你可以添加DEFINES += SOME_DEFINE=value到您的.pro文件。这是在创建者和构建命令行时拾取的,并且应该在从.pro文件创建MSVC或XCode项目时显示。

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

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

+1

不,我不建议使用qtcreator。我不只是因为它强大的索引。 – Bharathwaaj 2010-09-09 10:07:34

+0

而我的项目不是基于qmake的。 – Bharathwaaj 2010-09-09 10:08:01

+12

+1这可能无助于原始海报,但这是谷歌上“qtcreator define”的热门产品,我们中的许多人正在使用qmake和qtcreator构建。谢谢! – sage 2012-07-03 16:06:38

4

我想要在.pro文件中指定一个#define字符串,但是我的代码以不带引号的字符串内容结束。我不得不避开引号,然后逃脱逃脱,让一对引号持续到我的代码。这是因为qmake剥离了一组转义和一些引号,然后命令行剥离了其余部分。这为我工作:

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

在Windows,该版本字符串然后可以在rc文件用于创建版本的东西在那里的Windows想要它,以及在一个“关于”菜单中的代码。

+1

我有一个类似的问题。在命令行中的bash中,这对我有效:'qmake DEFINES + =“BUILD_DATE ='\'\”2016年8月17日\“\''”' – cgmb 2016-08-17 21:33:47

2

我认为最初的答案是好的,但他们需要您管理您的配置手动而这儿有办法让IDE管理此为您自动根据您是否有一个释放调试配置选择。

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

步骤

由于图片是胜过千言万语,这里是你如何定义一个调试宏使用Qt Creator的4.3.1您的调试版本为例:

  1. 请确保您有您的调试配置选择;

Run Configurations

  • 转到左边菜单上的项目;
  • 转到生成
  • Projects >> Build

  • 生成步骤,外观为附加参数输入框;
  • 输入您的宏定义(如DEBUG为您#ifdef DEBUG S IN的代码;在我的情况下,它__CTS_DEBUG__
  • Additional Arguments

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

    结果

    随着调试配置选择

    Debug Config

    在选定发布配置:

    Release Config

    +1

    这太棒了!谢谢! – KGCybeX 2018-01-26 11:12:54