[英]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.