2012-07-30 135 views
17

运行调试版本我如何在运行时检测到一个QObject内是否没有了Qt它链接的是一个调试版本或发布版本?检测是否Qt是在运行时

我了解QT_NO_DEBUG macro,但毕竟是在编译的时候Qt的解决。

的时,这将是有用的实施例1:我有充当崩溃处理提供一个回溯的插件。如果qt调试符号可用,我只希望这个插件尝试完成所有这些工作。

实施例2:我有写在PyQt的命令行参数分析器。它想打印程序帮助。它是如何发现QApplication是否会支持pyqt中的-sync开关。如果我有关于构建类型的信息,我可以从程序可以理解的参数列表中轻松添加或删除-sync。

+0

你想知道Qt库是调试版还是发布版,或者你想知道你的应用程序是在调试版还是发行版中编译? – 2012-07-30 08:22:59

+0

Qt库。 – 2012-07-30 18:57:24

回答

30

如果你只是想测试你是否正在运行应用程序的调试或发布版本,使用QT_DEBUG

#ifdef QT_DEBUG 
    qDebug() << "Running a debug build"; 
#else 
    qDebug() << "Running a release build"; 
#endif 

尽管这显然是使用预处理器,而不是在运行时检查。我有点困惑,为什么你指定你想使这个检查在运行时,看到建有或没有调试能力的决定只能在编译之前做...

我m没有意识到Qt4中有任何简单的方法来检查你所链接的Qt库是否已经启用了调试功能(虽然我注意到这在Qt5中会增加QLibraryInfo::isDebugBuild())。

+0

增加对问题的说明。 – 2012-07-30 18:58:28

+2

接受您的答案,不是针对宏,而是针对QLibraryInfo tidbit。看来,我一直在问的很多问题都是用Qt5解决的,包括这个问题。我会承认Qt4没有适当的解决方案。 – 2012-08-08 00:56:29