2017-04-17 112 views
0

我们的项目使用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。

回答

0

它很容易分解出app1.proapp1.priHEADERSSOURCESFORMS,等等,然后包括从app1lib.proapp1app.pro

相关问题