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

时间:2012-07-30 00:21:02

标签: qt qt4 pyqt kde

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

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

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

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

2 个答案:

答案 0 :(得分:36)

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

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

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

我不知道在Qt4中有什么简单的方法可以检查你链接的Qt库是否已经启用了调试(虽然我注意到这在Qt5中随着{{{ 3}})。

答案 1 :(得分:1)

接受的答案中的两个提示都是正确的。 Qt5 on macOS有一个副作用。默认情况下,框架使用它的库的发布版本,此方法的结果将始终为“false”值。