2009-10-08 6 views
31

Estoy escribiendo un pequeño conjunto de aplicaciones qt que consiste en un conjunto de pequeños programas que funcionan en el mismo conjunto de archivos. Ellos están organizados así:¿Cómo uso qmake para construir varios binarios en un solo proyecto?

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

Cuando yo qmake && make, quiero los siguientes binarios que se construirán:

  • app1/app1
  • app2/app2
  • app3/app3

¿Cómo escribo appsuite.pro para que funcione de esta manera?
He oído algo sobre los archivos .pri, pero no pude encontrar la manera de usarlos en mi "situación".

Ayuda apreciado,
JRH

Respuesta

30

Una forma de hacerlo es tener un archivo .pro en cada subdirectorio.

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 

El archivo common.pro debe construir una biblioteca estática a continuación, puede vincularse con los binarios.

común/common.pro:

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

Un archivo .pri simplemente contiene otros comandos qmake. Ciertamente, a menudo enumeran los archivos para su inclusión en un proyecto, pero no es necesariamente así. Por ejemplo, en el trabajo, tenemos uno que define un objetivo para que podamos hacer un "make depende" y regenerar los makefiles. –

+2

+1 para señalar que 'common' debe ser una' lib'. ¡Gracias! – jrharshath

+0

@cjhuitt .pri archivos no eran realmente relevantes en este caso, así que he eliminado la referencia. – PiedPiper

9

Una forma es crear su proyecto global appsuite.pro, así:

TEMPLATE = subdirs 
SUBDIRS = app1 app2 app3 

Los subproyectos app1.pro y app2.pro Asimismo, debe crearse para aquellas aplicaciones independientes , con una dependencia con respecto al subdirectorio común/

También puede especificar otras dependencias es en appsuite.pro, por ejemplo si app1 depende de app2, como:

app1.depends = app2 
Cuestiones relacionadas