添加一个定义给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"