2016-10-15 1 views
0

J'utilise qtcreator avec la structure de projet subdir. L'affaire est la suivante: J'ai 2 projets. Projet A et B. Après A compile, puis B, mais en B, je dois utiliser les en-têtes de A (classes, fonctions, etc.). J'ai trouvé dans wiki la configuration du projet depends et subdir, mais quand j'essaie d'inclure la classe A du projet A dans la classe B dans le projet B (ces noms sont pour convininece) cela me donne des références non définies. Voici mon fichier .pro de projet principal (et sous-projets respectivement):qtcreator depndancies de fichier de projet et ordre de construction

#base pro file 
TEMPLATE = subdirs 

SUBDIRS += \ 
    message \ 
    daemon \ 
    receiver 


daemon.subdir = daemon 
message.subdir = message 
daemon.depends = message 

sous-projet A:

TEMPLATE = app 
CONFIG += console c++11 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp \ 
    daemon.cpp \ 
    logwriter.cpp 

HEADERS += \ 
    daemon.h \ 
    logwriter.h \ 
    defs.h 

LIBS += -lpthread 

sous-projet B:

TEMPLATE = app 
CONFIG += console c++11 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += \ 
    message.cpp \ 
    main.cpp 

HEADERS += \ 
    message.h 

donc j'ai besoin des classes projet B en projet A et plus loin lorsque je prolonge le projet. Cordialement. EDIT: Un exemple .pri serait apprécié, si je vais mettre projet A à une bibliothèque (-lclssA)

Répondre

1

« références non définies » sont généralement des problèmes lien, pas en-tête incluent des problèmes. Vous devrez peut-être lier votre projet A avec B si vous avez besoin de l'utiliser. en A par exemple:

LIBS += ../path/to/libB.so 
+0

Lorsque je compile individuellement les fichiers .cpp du projet B, ils sont générés. Mes projets ne sont pas non plus des bibliothèques. Dois-je créer le projet de dépendance en tant que lib? Je ne veux pas faire ça. Donc je veux savoir si le projet qtcreator peut le faire. –

+0

Mais vous avez raison, le .so lib fonctionne, cependant, si je ne peux pas trouver une solution de contournement, je vais en faire une lib ... –

0

La façon la plus simple est de l'inclure comme lib, le plus simple était de QtCreator, rightclick sur la Dependee et « Ajouter la bibliothèque » -> « bibliothèque existante de construire l'arbre ». Cela va générer les éléments suivants dans le .pro:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../message/release/ -lmessage 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../message/debug/ -lmessage 
else:unix: LIBS += -L$$OUT_PWD/../message/ -lmessage 

INCLUDEPATH += $$PWD/../message 
DEPENDPATH += $$PWD/../message 

Cependant, je suis en train de perdre la capacité de faire des tests pour ma classe de message dans sa classe principale. Donc, s'il y a un meilleur moyen, je l'accepterais.