2010-12-13 30 views
4

Pour une raison étrange, je ne peux pas obtenir d'étendues dans QMake au travail. Voici un code dans mon dossier de projet:QMake: comment fonctionnent les oscilloscopes?

debug { 
    QMAKE_CXXFLAGS_DEBUG += -g3 -O0 
    message ("Some debug output") 
} 

release { 
    DEFINES += QT_NO_DEBUG 
    DEFINES += QT_NO_DEBUG_OUTPUT 
    message ("No debug output") 
} 

Mais quand je compile en mode de débogage, voici la ligne de commande gcc je reçois:

g++ -c -g -g3 -O0 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DLIBPROVERIM_LIBRARY -DQT_NO_DEBUG -DQT_NO_DEBUG_OUTPUT -DWINDOWS -DQT_DLL -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\2010.05\qt\include\QtCore" -I"c:\Qt\2010.05\qt\include\QtNetwork" -I"c:\Qt\2010.05\qt\include\QtGui" -I"c:\Qt\2010.05\qt\include\QtXml" -I"c:\Qt\2010.05\qt\include\QtSql" -I"c:\Qt\2010.05\qt\include" -I"c:\Qt\2010.05\qt\include\ActiveQt" -I"debug" -I"..\proverim" -I"." -I"c:\Qt\2010.05\qt\mkspecs\win32-g++" -o debug\PForm.o ..\proverim\PForm.cc 

Notez que j'ai essayé de nettoyer mon projet, ainsi que Suppression manuelle des fichiers makefiles Maintenant, pourquoi prend-il des définitions à partir des deux étendues? De plus, je ne vois aucun message, où sont-ils censés être?

+0

Je n'ai pas mentionné: ma plate-forme est MS Windows XP avec Qt Creator 2.0.1 et Qt 4.7.0. – Septagram

Répondre

2

J'ai eu le même problème. Pour le résoudre j'ai utilisé la "fonction" CONFIG au lieu des étendues. Cette section de votre fichier .pro serait:

CONFIG(debug, debug|release) { 
QMAKE_CXXFLAGS_DEBUG += -g3 -O0 
message("DEBUG!") 
} else { 
DEFINES += QT_NO_DEBUG 
DEFINES += QT_NO_DEBUG_OUTPUT 
message("RELEASE!") 
} 

Essayé dans un projet simple « HelloWorld » et tout semblait bien fonctionner.

+1

Cela a fonctionné, merci! Encore, je trouve cette syntaxe un peu d'un autre monde. – Septagram

1

Il existe une autre option de configuration appelée debug_and_release qui vous permet de créer les deux modes simultanément. Dans ce cas, il est correct que vos deux portées se déclenchent.

Essayez d'ajouter CONFIG=debug à votre commande qmake initiale; il devrait remplacer toutes les valeurs par défaut automatiques et vous limiter au mode de débogage. En tant que mesure de débogage, vous pouvez également essayer de sortir tout le contenu de CONFIG via message($$CONFIG) dans votre fichier .pro. Les messages sont imprimés quand qmake est exécuté, pas quand les makefiles sont compilés.

+0

Merci, maintenant je vois les messages. Quand je cours avec CONFIG = déboguer, les portées appropriées sont exécutées, cependant, je reçois beaucoup d'en-têtes manquants comme QtCore/qglobal.h. J'ai aussi essayé CONFIG- = sortie, mais cela n'a rien fait :( – Septagram

+0

essayez "CONFIG - = debug_and_release" – Dashogun