我們的項目使用C++和Qt,並使用qmake和.pro文件構建。qmake:使可執行文件和靜態庫成爲可能
我們有一個this question中描述的項目結構。這意味着一個文件夾結構是這樣的:
文件夾MYPROJECT包含
Myproject.pro
子目錄應用1
子目錄應用2
子目錄單元測試
子目錄常見
每個子目錄都有自己的.pro文件(app1.pro; app2.pro; unittest.pro; common.pro)和一些源代碼文件。
common.pro具有
TEMPLATE = lib
其他人具有
TEMPLATE = app
這意味着從共同產生的staticlib可由他人被包括在內。
現在App1中有些類可以很容易地進行單元測試,所以我們希望能夠將它們包含在Unittest中。這意味着應該將App1構建爲應用程序和庫。
目前的想法是將App1文件夾分成App1classes和App1main。 App1classes將包含幾乎所有內容,並構建爲一個lib。 App1main只包含主函數。這意味着來自app1classes的lib可以被app1main和unittest包含。
現在的問題是是否有更好的方法來做到這一點,即某種方式來調整app1.pro,以便構建可供其他人使用的可執行文件和靜態庫。
編輯:我在相同的文件夾中製作了兩個.pro文件,其公共部分爲.pri,正如接受的答案中所建議的那樣。我首先想到這是行不通的原因是因爲我想你只能在每個子目錄一個.pro文件,但如果你寫這Myproject.pro你可以有多個:
TEMPLATE = subdirs
SUBDIRS = Common App1 App2 App1lib Unittest
App1lib.file = App1/App1lib.pro
如果。文件不是爲一個子目錄確定的,它被假定爲subdirname/subdirname.pro。