qmake:制作可执行文件和静态库
qmake: make both executable and static lib
我们的项目使用 c++ 和 Qt,并使用 qmake 和 .pro 文件构建。
我们的项目结构如 this question 中所述。这意味着像这样的文件夹结构:
文件夹我的项目包含
Myproject.pro
子目录 App1
子目录 App2
子目录 Unittest
公共子目录
每个子目录都有自己的 .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.
用 HEADERS
、SOURCES
、FORMS
等将 app1.pro
分解为 app1.pri
,然后从 app1lib.pro
和 app1app.pro
.
我们的项目使用 c++ 和 Qt,并使用 qmake 和 .pro 文件构建。
我们的项目结构如 this question 中所述。这意味着像这样的文件夹结构:
文件夹我的项目包含
Myproject.pro
子目录 App1
子目录 App2
子目录 Unittest
公共子目录
每个子目录都有自己的 .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.
用 HEADERS
、SOURCES
、FORMS
等将 app1.pro
分解为 app1.pri
,然后从 app1lib.pro
和 app1app.pro
.