检测qt是否在运行时运行调试版本

tro*_*rau 18 qt kde qt4 pyqt

如何在运行时从QObject中检测它所链接的Qt是否是调试版本或发布版本?

我知道QT_NO_DEBUG宏,但是在Qt的构建时解决了这个问题.

示例1何时有用:我有一个插件充当崩溃处理程序,提供回溯.如果qt调试符号可用,我只希望这个插件尝试完成所有这些工作.

示例2:我有一个用pyqt编写的命令行参数解析器.它想要打印程序帮助.如何从pyqt中找出QApplication是否支持-sync开关.如果我有关于构建类型的信息,我可以从程序理解的参数列表中轻松添加或删除-sync.

sam*_*m-w 37

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

#ifdef QT_DEBUG
  qDebug() << "Running a debug build";
#else
  qDebug() << "Running a release build";
#endif
Run Code Online (Sandbox Code Playgroud)

虽然这显然使用预处理器,而不是在运行时检查.我有点困惑为什么你已经指定你想要在运行时进行这项检查,因为只有在编译之前才能决定使用或不使用调试功能进行构建...

我不知道在Qt4中有什么简单的方法来检查你链接的Qt库是否已经启用了调试(尽管我注意到这在Qt5中随着添加而改变QLibraryInfo::isDebugBuild()).

  • 接受你的答案,不是为了宏,而是为了QLibraryInfo花絮.似乎我一直在问的很多问题都是通过Qt5来解决的,包括这个问题.我会同意Qt4没有适当的解决方案. (2认同)