添加一个定义给qmake一个值?
如何添加一个定义与qmake的值:
例如,这在我的.pro文件中不起作用(如我所料):
DEFINES += WINVER 0x0500
也不
DEFINES += "WINVER 0x0500"
如何在开始编译之前将WINVER定义为0x0500,所以它的定义不受任何编译或包含命令的影响?
DEFINES += "WINVER=0x0500"
适用于我。
这样, -DWINVER=0x0500
被添加到编译器的命令行中,这是GCC / mingw期望命令行预处理器定义的语法(参见这里的详细信息)。
DEFINES += MY_DEF=\\\"String\\\"
这个格式是用来打算让macros被string元素所replace的
作为一个附录,如果你想执行shell代码,而不是仅仅设置一个常量(例如获取版本号或date):
使用$$system()
。 这在qmake执行时运行:
DEFINES += GIT_VERSION=$$system(git describe --always)
或者如果代码应该在每个版本上运行 (即执行makefile $()
则使用$()
)。 对于DEFINES
,如果它包含空格,则需要转义该命令,否则qmake将插入不需要的-D
:
DEFINES += GIT_VERSION='$(shell git describe --always)'
这将被复制到生成文件中。
如果命令的输出包含空格,则需要另一层擒纵机构(此时为make):
DEFINES += BUILD_DATE='"$(shell date)"'
如果你需要引用你的价值来获得一个string,它会有点难看:
DEFINES += BUILD_DATE='"\\\"$(shell date)\\\""'
我build议在这种情况下使用预处理器stringify操作:
#define _STR(x) #x #define STR(X) _STR(x) printf("this was built on " STR(BUILD_DATE) "\n");
格雷格的答案在.pro文件中工作正常。 但是,从命令行调用qmake时,我不得不离开空间,即使用某物。 像下面这样,做一个定义工作:
qmake DEFINES+="WINVER 0x0500"