[英]How to pass variables to qmake project file when qmake is run
在项目文件上调用qmake
时,我需要动态更改我的应用程序名称和后续定义。
一个例子是:
include(version.pri)
QT += core gui network concurrent
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
FLAVOR = ?
TARGET = ../bin/$$FLAVOR
TEMPLATE = app
message("Application name: $$APP_NAME")
!defined(APP_NAME) {
APP_NAME = $$FLAVOR
}
!defined(APP_ORG) {
APP_ORG = myorg
}
//...
message("Application name 2: $$APP_NAME")
产量
Application name:
Application name 2: ?
上面是我的项目文件的摘录。
文档:
根据Qmake documenation ,我应该能够执行以下操作:
FLAVOR = xyz
!defined(APP_NAME) {
APP_NAME = $$FLAVOR
}
以上代码的目的:
检查是否定义了APP_NAME(在任何地方,甚至作为qmake
参数传递)。 如果没有定义,然后设置APP_NAME
等于FLAVOR
包含XYZ
我努力了:
qmake -config debug "DEFINES += APP_NAME = myappname"
qmake -config debug "APP_NAME = myappname"
qmake -config debug APP_NAME = myappname
其中没有一个。
如何将定义传递给qmake,该定义将在Makefile中设置变量,即上例所示的APP_NAME
?
请注意 : 一些答案表明问题标题存在问题。 从那以后,我对标题进行了编辑,以更恰当地总结我的问题以及我希望实现的目标
我假设您不是要添加定义(如在预处理程序定义中一样,传递给编译器),而是要“分配”变量以在QMake项目文件中使用。
以下对我有用:
QT += core gui network concurrent
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
FLAVOR = ?
TARGET = ../bin/$$FLAVOR
TEMPLATE = app
message("Application name: $$APP_NAME")
!defined(APP_NAME, var) {
APP_NAME = $$FLAVOR
}
message("Application name 2: $$APP_NAME")
如您所见,使“已定义”语句起作用的一项看似至关重要的更改是将“ var”添加为第二个参数。 不知道为什么,但是没有它,第二个输出是“?”,而第一个正确是“ myappname”。
qmake的输出为:
...\Desktop\test_qmake>qmake -config debug "APP_NAME = myappname"
Project MESSAGE: Application name: myappname
Project MESSAGE: Application name 2: myappname
Project MESSAGE: Application name: myappname
Project MESSAGE: Application name 2: myappname
Project MESSAGE: Application name: myappname
Project MESSAGE: Application name 2: myappname
...\Desktop\test_qmake>qmake -v
QMake version 3.0
Using Qt version 5.7.1 in C:/Qt/5.7/mingw53_32/lib
//编辑:关于“已定义”语句,文档说“ [...]如果省略type,则检查所有函数。”,其中“ type”是第二个参数。 似乎是从字面上看,即仅检查函数,而不检查变量。 QMake函数参考“已定义”
您可以像这样将定义传递给qmake:
qmake DEFINES+="APP_NAME myappname"
而且,如果您想在pro文件中添加定义,您可以这样做:
DEFINES += "APP_NAME=myappname"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.