QT DEFINES和C ++中的#define一样吗?

时间:2013-04-26 19:41:59

标签: c++ qt

DEFINES += includthisvariable文件中.pro在QT中的作用是什么?

如果它像C ++中的#define那样工作,那么includethisvariable在哪里定义,以便预处理器可以用我设置的值替换includethisvariable

我理解#define在c ++中的作用,因为您将值设置在您定义的旁边。然而,在这里,您似乎只是列出了一个名称...... QT文档对我没有帮助解释。

4 个答案:

答案 0 :(得分:18)

Qt项目文件的DEFINES变量中的项目最终在编译器的命令行中使用-D选项(或适用于所使用的编译器的任何内容)。要为宏定义赋予值而不是仅仅定义它,请使用以下命令:

DEFINES += FOOBAR=foobar_value

这将在编译器的命令行中显示为-DFOOBAR=foobar_value

如果需要空格,则需要引用该值 - 并转义将在编译器命令行上传递的引号:

DEFINES += FOOBAR="\"foobar value\""

这个显示为:-DFOOBAR="foobar value"

答案 1 :(得分:5)

是的,它以同样的方式运作。 DEFINES += includethisvariable在正在编译的来源中包含预处理器符号includethisvariable

这意味着任何#ifdef语句,如

#ifdef includethisvariable
...
...
#endif

包含在正在编译的源中。

还可以定义带值的宏

`DEFINES += "MAXBUFFERSIZE=4096"

答案 2 :(得分:1)

来自documentation

  

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

#define NAME value

答案 3 :(得分:0)

如果您想在qmake文件中定义字符串文字的宏,则等效于#define VAR "Some string"

它看起来像这样:

DEFINES += CODE_WORKING_DIR=\\\"$$PWD\\\"

以便将其作为g ++(或您用于编译的任何内容)的参数生成:

g++ -c -DCODE_WORKING_DIR=\"/path/to/my/code\"

这很丑。如果有人知道更好的方法,请告诉我。