【发布时间】:2017-04-17 13:01:00
【问题描述】:
我们的项目使用 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 中有一些类可以很容易地进行单元测试,因此我们也希望能够将它们包含在单元测试中。这意味着 App1 应该同时构建为应用程序和库。
目前的思路是将App1文件夹拆分为App1classes和App1main。 App1classes 将包含几乎所有内容并作为库构建。 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
如果没有为 subdir 确定 .file,则假定它是 subdirname/subdirname.pro。
【问题讨论】: