2010-12-13 25 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