2011-08-18 4 views
2

J'ai une librairie et je voudrais qu'elle se copie dans un répertoire en fonction de la configuration dans laquelle je suis (debug ou release). Voici mon fichier de projet.Qmake en mode release et debug

#------------------------------------------------- 
# 
# Project created by QtCreator 2011-08-13T12:48:33 
# 
#------------------------------------------------- 

TARGET = JECLibrary 
TEMPLATE = lib 

DEFINES += JECLIBRARY_LIBRARY 

SOURCES += \ 
    JECMessageText.cpp \ 
    JECMessageCombo.cpp \ 
    JECButton.cpp 

HEADERS +=\ 
     JECLibrary_global.h \ 
    JECMessageText.h \ 
    JECMessageCombo.h \ 
    JECButton.h 

CONFIG(debug, debug|release) 
{ 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} 
CONFIG(release, debug|release) 
{ 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

FORMS += \ 
    JECMessageText.ui \ 
    JECMessageCombo.ui 

Pour une raison quelconque, le debug ou release DLL sont copiés dans les deux répertoires au lieu d'un seul. Donc, si je cours en mode release, j'obtiens la release DLL dans le répertoire Debug et dans le répertoire release.

Je suis totalement confus. Quelqu'un pourrait-il éclairer cela? Merci

Répondre

4

L'accolade d'ouverture devrait être sur la même ligne que la condition:

CONFIG(debug, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} 
CONFIG(release, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

ou

CONFIG(debug, debug|release) { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/debug) 
    message("Copying to Jane Debug Directory.") 
} else { 
    DLLDESTDIR += $$quote(../../../Jane/Jane/Build/release) 
    message("Copying to Jane Release Directory.") 
} 

Mais les deux messages seront affichés, car les fichiers Makefile.Debug et Makefile.Release sont tous deux créés lorsque vous exécutez qmake (sous Windows ou si vous ajoutez debug_and_release à la variable CONFIG sur d'autres systèmes d'exploitation).

+0

Oui, mais le dll ou exe résultant (selon le projet que je cours) sera à la fois la libération ou le débogage en fonction du mode dans son. Donc, si je l'exécute en débogage, l'exe dans le dossier de libération sera le version de débogage. Comment puis-je arrêter cela? J'ai aussi essayé la méthode else et QMake m'a donné une erreur. TY pour la réponse. – jecjackal

+0

J'ai corrigé le premier bloc, et les deux méthodes semblent fonctionner correctement (les Makefiles générés contiennent chacun le bon chemin). Quelle erreur qmake vous a-t-il donnée? – alexisdm

+0

d'autre pas défini était l'erreur qu'il m'a donné – jecjackal

Questions connexes