如何使用带有值的qmake添加定义:
例如,这在我的.pro文件中不起作用(如我所料):
DEFINES += WINVER 0x0500
Run Code Online (Sandbox Code Playgroud)
也不
DEFINES += "WINVER 0x0500"
Run Code Online (Sandbox Code Playgroud)
如何在任何开始编译之前将WINVER定义为0x0500,这样它的定义不受编译或包含顺序的任何影响?
小智 46
DEFINES += MY_DEF=\\\"String\\\"
Run Code Online (Sandbox Code Playgroud)
当打算用string元素替换宏时,将使用此格式
ili*_*iis 24
作为附录,如果您想执行shell代码而不是仅设置常量(例如,获取版本号或日期):
要么使用$$system().这是在执行qmake时运行的:
DEFINES += GIT_VERSION=$$system(git describe --always)
Run Code Online (Sandbox Code Playgroud)
或者使用$()代码应该在每个构建上运行(即执行makefile时).对于DEFINES你需要的,如果它包含空格逃脱命令,否则QMAKE插入无用-D的:
DEFINES += GIT_VERSION='$(shell git describe --always)'
Run Code Online (Sandbox Code Playgroud)
然后将其逐字复制到makefile中.
如果命令的输出包含空格,则需要另一层擒纵(这次是make):
DEFINES += BUILD_DATE='"$(shell date)"'
Run Code Online (Sandbox Code Playgroud)
如果你需要围绕你的值的引号来获得一个字符串,它会有点难看:
DEFINES += BUILD_DATE='"\\\"$(shell date)\\\""'
Run Code Online (Sandbox Code Playgroud)
我建议在这种情况下使用预处理器stringify操作:
#define _STR(x) #x
#define STRINGIFY(x) _STR(x)
printf("this was built on " STRINGIFY(BUILD_DATE) "\n");
Run Code Online (Sandbox Code Playgroud)
小智 10
#定义Qt * .PRO文件的STRING“带空格的值”:
为了从QT Project文件中添加#define STRING“带空格的值”,我们必须编写:
DEFINES += "VERSION_LOG=\"\\\"Version 2.5.1\\\"\""
DEFINES += "VERSION_QT=\"\\\"Qt 5.10\\\"\""
Run Code Online (Sandbox Code Playgroud)
进入Makefile.Release文件:
DEFINES = -DUNICODE -D_UNICODE -DVERSION_LOG="\"Version 2.5.1\"" -DVERSION_QT="\"Qt 5.10\"" -DQT_NO_DEBUG [...]
Run Code Online (Sandbox Code Playgroud)
总而言之,在那一行: DEFINES += "VERSION_LOG=\"\\\"Version 2.5.1\\\"\""
第一个和最后一个"告诉QMake以字符串形式读取整个句子
第一个和最后一个\"将第一个和最后一个"写入-DVERSION_LOG="\"Version 2.5.1\""
第一个和最后\\\"写一\则"成-DVERSION_LOG="\"Version 2.5.1\""