DEFINES += includthisvariable
文件中.pro
在QT中的作用是什么?
如果它像C ++中的#define
那样工作,那么includethisvariable
在哪里定义,以便预处理器可以用我设置的值替换includethisvariable
?
我理解#define
在c ++中的作用,因为您将值设置在您定义的旁边。然而,在这里,您似乎只是列出了一个名称...... QT文档对我没有帮助解释。
答案 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)
定义在.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\"
这很丑。如果有人知道更好的方法,请告诉我。