En plus de Commentaire de Troubadour j'aimerais noter que le SUBDIRS
target n'est bon que pour spécifier des sous-répertoires. Par conséquent, votre ligne supplémentaire de
SOURCES += main.cpp
dans votre fichier project.pro est incorrect, et échouera probablement à construire votre fichier main.cpp, au pire. Au mieux, qmake refusera d'analyser le fichier, puisqu'il contient des spécifications contradictoires.
J'ai utilisé le SUBDIRS
et il fonctionne bien si vous pouvez construire des parties dans des bibliothèques plus ou moins indépendantes, apparemment comme vous l'avez fait avec la logique et l'interface séparée. Voici une façon de le faire :
project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cpp
projet.pro :
TEMPLATE = subdirs
SUBDIRS = logic \
gui
# build must be last:
CONFIG += ordered
SUBDIRS += build
commun.pri :
#Includes common configuration for all subdirectory .pro files.
INCLUDEPATH += . ..
WARNINGS += -Wall
TEMPLATE = lib
# The following keeps the generated files at least somewhat separate
# from the source files.
UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs
logique/logic.pro :
# Check if the config file exists
! include( ../common.pri ) {
error( "Couldn't find the common.pri file!" )
}
HEADERS += logic.h
SOURCES += logic.cpp
# By default, TARGET is the same as the directory, so it will make
# liblogic.a (in linux). Uncomment to override.
# TARGET = target
gui/gui.pro :
! include( ../common.pri ) {
error( "Couldn't find the common.pri file!" )
}
FORMS += gui.ui
HEADERS += gui.h
SOURCES += gui.cpp
# By default, TARGET is the same as the directory, so it will make
# libgui.a (in linux). Uncomment to override.
# TARGET = target
build/build.pro :
TEMPLATE = app
SOURCES += main.cpp
LIBS += -L../logic -L../gui -llogic -lgui
# Will build the final executable in the main project directory.
TARGET = ../project