qmake:制作可执行文件和静态库

qmake: make both executable and static lib

我们的项目使用 c++ 和 Qt,并使用 qmake 和 .pro 文件构建。

我们的项目结构如 this question 中所述。这意味着像这样的文件夹结构:

文件夹我的项目包含

每个子目录都有自己的 .pro 文件(app1.pro ; app2.pro ; unittest.pro ; common.pro)和一些源代码文件。

common.pro 有

TEMPLATE = lib

其他人有

TEMPLATE = app

也就是说common生成的staticlib可以被其他人引用

App1 中现在有一些 类 可以很容易地进行单元测试,因此我们也希望能够将它们包含在单元测试中。这意味着 App1 应该作为应用程序和库构建。

目前的想法是将App1文件夹拆分为App1类和App1main。 App1类 将包含几乎所有内容并构建为库。 App1main 将只包含主要功能。这意味着来自 app1类 的库可以被 app1main 和 unittest.

包含

问题是是否有更好的方法来做到这一点,即调整 app1.pro 的某种方法,以便它构建可执行文件和静态库,可以被其他人包含。

edit:我在同一个文件夹中制作了两个 .pro,它们的公共部分有一个 .pri,如已接受的答案中所建议的那样。我最初认为这行不通的原因是因为我认为每个子目录中只能有一个 .pro 文件,但如果你在 Myproject.pro:

中写这个,你可以有多个
TEMPLATE = subdirs
SUBDIRS = Common App1 App2 App1lib Unittest
App1lib.file = App1/App1lib.pro

如果没有为子目录确定 .file,则假定为 subdirname/subdirname.pro.

HEADERSSOURCESFORMS 等将 app1.pro 分解为 app1.pri,然后从 app1lib.proapp1app.pro.