2009-10-08 102 views
31

我在写一个小型qt应用程序套件,它由一组工作在同一组文件上的小程序组成。他们组织这样的:如何使用qmake在单个项目中构建多个二进制文件?

/ 
    app1/ 
    main.cpp 
    app2/ 
    main.cpp 
    app3/ 
    main.cpp 
    common/ 
    project.h 
    project.cpp 
    somemore.h 
    somemore.cpp 
    appsuite.pro 

当我做qmake && make,我想下面的二进制文件就可以了:

  • APP1/APP1
  • APP 2/APP 2
  • APP3/APP3

我如何写appsuite.pro到这样的工作吗?
我听说过.pri文件,但我无法弄清楚如何在我的“情况”中使用它们。

帮助表示赞赏,
JRH做的

回答

30

一种方法是让每个子目录一个.pro文件。

appsuite.pro:

TEMPLATE = subdirs 
SUBDIRS = common app1 app2 app3 
app1.depends = common 
app2.depends = common 
app3.depends = common 

APP1/app1.pro:

TARGET = app1 
SOURCES = main.cpp 
INCLUDEPATH += ../common 
LIBS += -L../common -lcommon 

的common.pro文件应该建立一个静态库,那么你可以链接到二进制文件。

通用/ common.pro:

TEMPLATE = lib 
CONFIG = staticlib 
SOURCES = project.cpp more.cpp 
HEADERS = project.h more.h 
+1

.pri文件仅包含其他qmake命令。当然,他们经常列出要包含在项目中的文件,但并不一定如此。例如,在工作中,我们有一个定义目标的方法,以便我们可以执行“取决于”并重新生成makefile。 – 2009-10-09 02:34:35

+2

+1指出'common'应该是'lib'。谢谢! – jrharshath 2009-10-09 02:50:02

+0

@cjhuitt .pri文件在这种情况下并不真正相关,所以我删除了参考。 – PiedPiper 2009-10-09 09:23:46

9

一种方法是创建全球项目appsuite.pro,像这样:

TEMPLATE = subdirs 
SUBDIRS = app1 app2 app3 

的子项目app1.proapp2.pro也应单独的应用程序创建,关于公共/子目录的依赖关系

您还可以指定其他依赖关系例如,如果app1取决于app2,则为:

app1.depends = app2 
相关问题