DEFINES += includthisvariable
QT 中文件的作用是什么.pro
?
如果它像#define
C++ 中的那样工作,那么在哪里includethisvariable
定义以便预处理器可以用includethisvariable
我设置的值替换?
我理解#define
C++ 中的作用,因为您将值设置在您定义的值旁边。但是在这里,您似乎只是列出了一个名称... QT 文档并没有帮助我解释这一点。
Qt 项目文件DEFINES
变量中的项目最终在编译器的命令行上带有-D
选项(或任何适合正在使用的编译器的选项)。要给宏定义一个值而不是仅仅定义它,请使用以下命令:
DEFINES += FOOBAR=foobar_value
这将在编译器的命令行上显示为-DFOOBAR=foobar_value
如果您需要空格,则需要引用该值 - 并转义将在编译器命令行上传递的引号:
DEFINES += FOOBAR="\"foobar value\""
这个显示为:-DFOOBAR="foobar value"
是的,它以同样的方式工作。DEFINES += includethisvariable
在正在编译的源代码中包含预处理器符号includethisvariable
。
这意味着任何#ifdef 语句,如
#ifdef includethisvariable
...
...
#endif
包含在正在编译的源代码中。
也可以定义带有值的宏
`DEFINES += "MAXBUFFERSIZE=4096"
如果你想在你的 qmake 文件中定义一个字符串字面量的宏,相当于#define VAR "Some string"
它看起来像这样:
DEFINES += CODE_WORKING_DIR=\\\"$$PWD\\\"
这样它就会产生它作为 g++ 的参数(或者你用来编译的任何东西):
g++ -c -DCODE_WORKING_DIR=\"/path/to/my/code\"
这是丑陋的。如果有人知道更好的方法,请告诉我。
从文档中:
定义在 .config 文件中指定。.config 文件是一个常规的 C++ 文件,在解析时添加到所有源文件中。仅使用 .config 文件添加行,如下例所示:
#define NAME value