2017-04-17 75 views
0

我們的項目使用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。

回答

0

它很容易分解出app1.proapp1.priHEADERSSOURCESFORMS,等等,然後包括從app1lib.proapp1app.pro

相關問題