16

DEFINES += includthisvariableQT 中文件的作用是什么.pro

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

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

4

4 回答 4

20

Qt 项目文件DEFINES变量中的项目最终在编译器的命令行上带有-D选项(或任何适合正在使用的编译器的选项)。要给宏定义一个值而不是仅仅定义它,请使用以下命令:

DEFINES += FOOBAR=foobar_value

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

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

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

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

于 2013-04-26T19:53:46.937 回答
6

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

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

#ifdef includethisvariable
...
...
#endif

包含在正在编译的源代码中。

也可以定义带有值的宏

`DEFINES += "MAXBUFFERSIZE=4096"
于 2013-04-26T19:52:01.453 回答
2

如果你想在你的 qmake 文件中定义一个字符串字面量的宏,相当于#define VAR "Some string"

它看起来像这样:

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

这样它就会产生它作为 g++ 的参数(或者你用来编译的任何东西):

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

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

于 2018-08-11T08:51:57.100 回答
1

文档中:

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

#define NAME value
于 2013-04-26T19:56:08.597 回答