qmake 亂亂亂談 四

2021-08-10 09:37:55 字數 2246 閱讀 7244

繼續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  = subdirs

template = subdirs

subdirs = test1 test2

一切看起來都很自然。subdirs,顧名思義,subdirs 中指定的就是乙個個的子目錄唄。真是如此麼?

subdirs 中指定的是乙個個的子目錄來理解,很快有個問題:

每個子目錄下的工程檔案必須和子目錄同名!可是,萬一不同名又如何解決呢??

|-- project.pro

| `-- hello.pro

|-- lib1\

| `-- libwidget.pro

`-- lib2\

`-- libtools.pro

恩,這時就該

.file

出場了!

template  = subdirs

lib1.file = lib1/libwidget.pro

lib2.file = lib2/libtools.pro

恩,直到這時,subdirs 中指定的還都是目錄名,仍然沒什麼問題。可是,在看到.file不久,就發現了.subdir

這個東西實在不好理解了,比如,下面的結構:

|-- project.pro

`-- lib1\

`-- lib1.pro

template  = subdirs

my_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 不再亂談

累了,不想再寫下去了.有些東西感覺寫的過頭,寫完又刪除了,過猶不及,點到即止,過頭了的東西放網上,誰知道會搞出什麼問題,下一步集中精力做我的下十年去了.幾篇暢想和亂彈,已經打好了最後終結所需的東西,最後完全算是有個交待,給萬一以後有人進來看到,不能浪費了人家的時間和熱情.對於函式式程式設計,感覺自已...