2009-10-08 8 views
31

Sto scrivendo una piccola app suite qt che consiste in una serie di piccoli programmi che funzionano sullo stesso set di file. Sono organizzati in questo modo:Come si usa qmake per creare più binari in un singolo progetto?

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

Quando faccio qmake && make, voglio i seguenti file binari da costruire:

  • app1/app1
  • app2/app2
  • APP3/APP3

Come si scrive appsuite.pro per funzionare in questo modo?
Ho sentito qualcosa sui file .pri, ma non sono riuscito a capire come usarli nella mia "situazione".

aiuto apprezzato,
JRH

risposta

30

Un modo per farlo è quello di avere un file .pro per ogni sottodirectory.

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 

Il file common.pro dovrebbe costruire una libreria statica è quindi possibile collegare nelle file binari.

comune/common.pro:

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

Un file .pri contiene semplicemente altri comandi qmake. Certamente spesso elencano i file per l'inclusione in un progetto, ma non è necessariamente così. Ad esempio, al lavoro ne abbiamo uno che definisce un target in modo che possiamo fare un "make dipende" e avere i makefile rigenerati. –

+2

+1 per aver sottolineato che 'common' dovrebbe essere un' lib'. Grazie! – jrharshath

+0

@cjhuitt I file .pri non erano davvero rilevanti in questo caso, quindi ho rimosso il riferimento. – PiedPiper

9

Un modo è quello di creare il vostro progetto globale appsuite.pro, in questo modo:

TEMPLATE = subdirs 
SUBDIRS = app1 app2 app3 

I sottoprogetti app1.pro e app2.pro dovrebbe anche essere creati per i soli quelle applicazioni , con una dipendenza rispetto alla sottodirectory comune/

È inoltre possibile specificare altre dipendenci es in app.suite.pro, ad esempio se app1 dipende da app2, come:

app1.depends = app2 
Problemi correlati