2010-12-13 68 views
4

由於某種奇怪的原因,我無法在QMake中使用示波器進行工作。下面是我的項目文件中的一些代碼:QMake:示波器如何工作?

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

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

但是,當我在調試模式下編譯它,這裏的gcc命令行,我得到:

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 

請注意,我試圖清理我的項目,以及手動刪除makefile。現在爲什麼需要兩個範圍的定義?另外,我沒有看到任何消息,他們應該在哪裏?

+0

我沒有提到:我的平臺是使用Qt Creator 2.0.1和Qt 4.7.0的MS Windows XP。 – Septagram 2010-12-13 11:23:35

回答

2

我有同樣的問題。爲了解決這個問題,我使用了CONFIG「function」而不是示波器。 你的.pro文件的這部分將是:

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

在一個簡單的「HelloWorld」項目嘗試過了,一切似乎都正常工作。

+1

這工作,謝謝!儘管如此,我覺得這個語法有點另類。 – Septagram 2010-12-14 04:38:43

1

還有一個名爲debug_and_release的配置選項,它允許您同時構建兩種模式。在這種情況下,兩個範圍都被觸發是正確的。

嘗試將CONFIG=debug添加到您的初始qmake命令;它應該覆蓋任何自動默認值並將您限制爲調試模式。

作爲一種調試手段,您也可以嘗試在.pro文件中通過message($$CONFIG)輸出CONFIG的全部內容。消息在qmake運行時打印,而不是在編譯makefile時打印。

+0

謝謝,現在我看到了消息。當我運行CONFIG = debug時,合適的範圍得到執行,但是,我收到了很多丟失的標頭 ,比如QtCore/qglobal.h。我也嘗試了CONFIG- = release,但那沒有做任何事情:( – Septagram 2010-12-14 04:17:30

+0

嘗試「CONFIG - = debug_and_release」 – Dashogun 2010-12-15 00:20:23