2012-01-10 55 views
32

有没有人知道一个正式支持的方式来包含Qt中的debug-build only代码?例如:Qt是否提供(保证)调试定义?

#ifdef QT_DEBUG 
// do something 
#endif 

基本上像Q_ASSERT,但是对于更复杂的测试。

我似乎无法找到任何说明Qt框架保证定义调试宏的文档。如果没有,那么非官方的方式会实现这个功能项目范围是什么?

回答

39

Qt为发布版本定义QT_NO_DEBUG。否则定义QT_DEBUG

当然,您可以在.pro文件中指定任何DEFINES,并将其范围为debugrelease

+0

你知道的任何证据表明'QT_NO_DEBUG'正式支持Qt框架境外使用? – 2012-01-10 12:07:39

+1

不,只读源文件。尽管发布的API头文件中的定义不可能在没有很好理由的情况下更改。 – laalto 2012-01-10 15:27:19

13

另一种方法是在您的项目文件中是这样写的:

debug { 
    DEFINES += MYPREFIX_DEBUG 
} 
release { 
    DEFINES += MYPREFIX_RELEASE 
} 

这样你就不会依赖于Qt的内部定义。

+0

不是一个不合理的建议,但我**特别**希望避免额外的定义。 – 2013-12-20 09:23:38

+0

为什么?你在额外的定义中看到什么缺点? – eSKon 2013-12-21 09:40:40

4

对于检查调试模式:

#ifdef QT_DEBUG 
    //Some codes 
#endif 

对于检查发布模式:

#ifndef QT_DEBUG //<== Please note... if not defined 
    //Some codes 
#endif