繼續qmake,本文主題:低調的 template = subdirs
非常非常常用的乙個東西,可是manual中卻介紹的很少,太低調了。在編寫包含多可執行檔案、庫、外掛程式 的程式時,一直不敢相信subdirs的能力,以至於曾一度想轉到cmake之下。
manual 中對 template = subdirs 的介紹實在簡單:
相當長一段時間,自己都是按manual中的說法進行使用的:
|-- project.pro|-- lib1\
| `-- lib1.pro
|-- lib2\
| `-- lib2.pro
`-- tests\
|-- tests.pro
|-- test1\
| `-- test1.pro
|-- test2\
`-- test2.pro
template = subdirstemplate = subdirs
subdirs = test1 test2
一切看起來都很自然。subdirs,顧名思義,subdirs 中指定的就是乙個個的子目錄唄。真是如此麼?
subdirs 中指定的是乙個個的子目錄來理解,很快有個問題:
每個子目錄下的工程檔案必須和子目錄同名!可是,萬一不同名又如何解決呢??
|-- project.pro| `-- hello.pro
|-- lib1\
| `-- libwidget.pro
`-- lib2\
`-- libtools.pro
恩,這時就該
.file
出場了!
template = subdirslib1.file = lib1/libwidget.pro
lib2.file = lib2/libtools.pro
恩,直到這時,subdirs 中指定的還都是目錄名,仍然沒什麼問題。可是,在看到.file不久,就發現了.subdir
這個東西實在不好理解了,比如,下面的結構:
|-- project.pro`-- lib1\
`-- lib1.pro
template = subdirsmy_lib1.subdir = lib1
這樣一來,subdirs 後面的東西,完全不是目錄名了,而是任意乙個名字!
有了上面兩個之後,容易想到的就是:?
比如:|-- project.pro
| `-- hello.pro
`-- lib1\
`-- lib1.pro
project.pro是否可以這麼寫呢?
template = subdirs可是,這麼卻不會工作。不能同時指定 .subdir 和 .file!那怎麼辦呢?
去掉 .subdir呢?試試看
template = subdirs
啊?還真可以了!
怎麼回事?現在不光 subdirs 後面指定的不是目錄,後面也不需要 .subdir 來指定目錄了。
看來,subdirs是嚴重的名不副實了!
還是這個例子:
|-- project.pro
| `-- hello.pro
`-- lib1\
`-- lib1.pro
template = subdirs我們可以直接指定pro工程名!
恩,不需要每個目錄都用乙個pro檔案
|-- project.pro
|-- lib1\
| `-- lib1.pro
|-- lib2\
| `-- lib2.pro
`-- tests\
|-- test1\
| `-- test1.pro
|-- test2\
`-- test2.pro
template = subdirs
恩,這樣似乎又回歸簡單了。只需簡單指定目錄或pro檔案路徑即可。
恩,下面5個之中,我們只提到了2個(最後2個本人沒用到過,也不清楚具體用途)
不過中間的depends還是很有用的
template = subdirs
from:
qmake 亂亂亂談 二
接前面qmake 亂亂亂談 一 繼續看看qmake。暫定主題 qmake之命令列引數及qmake啟動時載入了什麼東西,或許可以藉此學習一下qmake是處理命令列引數的方法 執行 qmake h 可以得到qmake大部分命令列引數及其說明。本文預計涉及到的引數如下 project 工作於何種模式,pr...
qmake 亂亂亂談 三
接前面的qmake 亂亂亂談 一 以及qmake 亂亂亂談 二 本文看看qmake中的函式 manual中有的就不重複了 函式分兩種 函式還可以分兩種 真不知道怎麼敘述 以進行資料處理為目的的函式?返回值是處理結果。前面提到,兩類函式中,exists qtdir lib libqt mt file ...
亂談 2 不再亂談
累了,不想再寫下去了.有些東西感覺寫的過頭,寫完又刪除了,過猶不及,點到即止,過頭了的東西放網上,誰知道會搞出什麼問題,下一步集中精力做我的下十年去了.幾篇暢想和亂彈,已經打好了最後終結所需的東西,最後完全算是有個交待,給萬一以後有人進來看到,不能浪費了人家的時間和熱情.對於函式式程式設計,感覺自已...