Qmake

Qmake的用法
1.變量的使用
Qmake提供了很多的內置變量,主要包含了項目構建相關的變量

以及Qt自身相關變量,詳細可以參見qmake Variable Reference,Qt也提供供了

一些內置工具變量,這些變量可以在qmake生成的Makefile中看到,例如拷貝和
刪除命令 QMAKE_COPY QMAKE_DEL等。
Qmake也提供了一些Qt自身環境的變量,這些變量可以通過qmake -query看到

2.函數的使用
2.1 Replace函數
Qt提供了很多的內置replace函數,詳細可以通過qmake function查看,
例如replace,join,split,member,fist,last等。當然也可以自定製函數
自定製函數的變量通過$$1, $$2… $$N來進行訪問,所有的參數存儲在
一個List中”ARGS”就是所有參數 ARGS = $$1 $$2 ….
獲取變量名參數的值,這裏特別要注意的是,qmake傳遞的始終是字符串
所以可以傳遞變量名稱或者直接值,具體傳的是變量的名稱還是變量的
值,可以通過函數說明知道,如果傳遞的是變量的值,直接通過$$N就可以
直接取得,如果傳遞的變量,則需要通過執行函數來獲取
realvalue = $$eval($$N)。
defineReplace(myfunc){ qmake的函數”{}”括號必須和條件在一行
return (aa, bb, cc)
}
調用過程 LIST1 = $$myfunc() 特別注意這裏必須要有返回值,否則報警告

2.2 Test函數
test函數和replace函數的參數使用,以及調用規則相同,唯一不同的是
test函數在調用的過程中不需要加”$$”符號,但是replace函數需要,而且
replace函數還需要一個變量來接收返回值,test主要用來判斷,返回值只有
true和false,true是真,false是假
defineTest(equal0){
isEuqal($$1, 0){
return (true)
}

return (false)
}

for函數用法
for函數使用過程的注意點:
<1>傳入的是變量名稱
<2>訪問循環變量調用 $${i}
例如:
for(i, LIST){
message(i=$${i})
}

對象列表的用法
例如
aa.filename = test1.data
aa.name = aa
bb.filename = test2.data
bb.name = bb

LISTA = aa bb
for(i, LISTA){
filename = $$eval($${i}.filename)
name = $$eval($${i}.name)
message(filename = $$filename name = $$name)
}

LIST = xx yy zz
for(i, LIST){
message(i = $${i})
}

aa.filename = test1.data
aa.name = aa

bb.filename = test2.data
bb.name = bb

LISTA = aa bb
for(i, LISTA){
filename = $$eval($${i}.filename)
name = $$eval($${i}.name)
message(filename = $$filename name = $$name)
}

Qmake的轉義字符,以及”“字符

Qmake的pro文件中”“都用來表示註釋,要輸出”“,需要使用LITERAL_HASH來表示”“

Qmake中如果在字符串中輸出”” 需要使用\來進行轉義

另外需要注意的是,Qmake的replace函數,使用的是正則表達式,在進行替換的時候 * + ?等都是需要進行轉義的

varname = “a*b = 5”

例如 newstr = $$replace(varname, $$quote(“*”), “+”)

另外需要注意的事情是,如果需要修改Qmake內置變量的值

*請一定不要在函數中進行修改,函數可以訪問,但是絕對不能進行修改

*因爲修改Qmake內置變量的值是不會生效的。

*例如你需要配置某個庫的INCLUDEPATH,LIB等,你如果編寫函數進行修改

*修改不會生效。需要在執行語句中完成。

defineReplace(configlib){

INCLUDEPATH += $$1

LIBS += -L$$2

}

直接調用$$configlib(/usr/lib/include, /usr/lib)

這樣不會生效,Qmake會在調用函數前備份變量數據,調用後恢復備份前的數據,並返回新數據

所以不會生效,如果要實現這樣的操作,只能將代碼寫在直接配置語句中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章