我们的项目使用c ++和Qt,并使用qmake和.pro文件构建。
我们有this question中描述的项目结构。这意味着像这样的文件夹结构:
文件夹Myproject包含
Myproject.pro
子目录App1
子目录App2
子目录单元测试
子目录通用
每个子目录都有自己的.pro文件(app1.pro; app2.pro; unittest.pro; common.pro)和许多源代码文件。
common.pro有
TEMPLATE = lib
其他人
TEMPLATE = app
这意味着从common生成的staticlib可以被其他人包含。
App1中现在有一些类可以很容易地进行单元测试,所以我们希望能够将它们包含在Unittest中。这意味着App1应该作为应用程序和lib构建。
目前的想法是将App1文件夹拆分为App1classes和App1main。 App1classes几乎包含所有内容,并构建为lib。 App1main只包含main函数。这意味着来自app1classes的lib可以包含在app1main和unittest中。
问题在于是否有更好的方法来实现这一点,即某种方式来调整app1.pro,以便它构建可执行文件和可由其他人包含的staticlib。
编辑:我在同一个文件夹中创建了两个.pro,其公共部分为.pri,如接受的答案所示。我之所以认为这不起作用的原因是因为我认为每个子目录中只能有一个.pro文件,但是如果你在Myproject.pro中写这个文件就可以有多个:
TEMPLATE = subdirs
SUBDIRS = Common App1 App2 App1lib Unittest
App1lib.file = App1/App1lib.pro
如果没有为子目录确定.file,则假定它是subdirname / subdirname.pro。
答案 0 :(得分:0)
通过app1.pro
,app1.pri
,HEADERS
等将SOURCES
分解为FORMS
更加容易,然后将其包括在内来自app1lib.pro
和app1app.pro
。