2009-10-08 6 views
31

J'écris une petite suite d'applications qt qui consiste en un ensemble de petits programmes qui fonctionnent sur le même ensemble de fichiers. Ils sont organisés comme ceci:Comment utiliser qmake pour générer plusieurs binaires dans un seul projet?

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

Quand je qmake && make, je veux que les binaires suivants à construire:

  • app1/app1
  • App2/App2
  • ANN3/ANN3

Comment écrire appsuite.pro pour travailler comme ceci?
J'ai entendu parler de fichiers .pri, mais je ne savais pas comment les utiliser dans ma "situation".

Aide appréciée,
HJR

Répondre

30

Une façon de le faire est d'avoir un fichier .pro par sous-répertoire.

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 

Le fichier common.pro doit construire une bibliothèque statique vous pouvez créer un lien dans les binaires.

commune/common.pro:

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

Un fichier .pri contient simplement d'autres commandes qmake. Certes, ils listent souvent les fichiers à inclure dans un projet, mais ce n'est pas nécessairement le cas. Par exemple, au travail, nous en avons un qui définit une cible afin que nous puissions faire un «make depends» et que les makefiles soient régénérés. –

+2

+1 pour signaler que 'common' devrait être un' lib'. Merci! – jrharshath

+0

@cjhuitt Les fichiers .pri n'étaient pas vraiment pertinents dans ce cas donc j'ai supprimé la référence. – PiedPiper

9

Une façon est de créer votre projet global appsuite.pro, comme ceci:

TEMPLATE = subdirs 
SUBDIRS = app1 app2 app3 

Les sous-projets app1.pro et app2.pro devraient également être créés pour les applications autonomes , avec une dépendance concernant le commun/sous-répertoire

Vous pouvez également spécifier d'autres dépendances es dans appsuite.pro, par exemple si app1 dépend de app2, comme:

app1.depends = app2 
Questions connexes