qmake:使可执行文件和静态库成为可能
我们的项目使用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。
它很容易分解出app1.pro
到app1.pri
与HEADERS
,SOURCES
,FORMS
,等等,然后包括从app1lib.pro
和app1app.pro
。