如何在运行时从QObject中检测它链接的Qt是调试版本还是发布版本?我知道QT_NO_DEBUG macro,但这只适用于Qt的构建时。举个例子,当插件作为崩溃处理程序提供回溯时,只有在qt调试符号可用时才希望该插件尝试完成所有这些工作。另一个例子是,在pyqt中编写的命令行参数解析器想要打印程序帮助信息,它应该如何从pyqt中找出QApplication是否支持-sync开关?如果我了解构建类型的信息,就可以轻松地从程序理解的参数列表中添加或删除-sync。
如果你只是想测试你的应用程序是在调试版本还是发布版本下运行,可以使用QT_DEBUG
:
#ifdef QT_DEBUG
qDebug() << "Running a debug build";
#else
qDebug() << "Running a release build";
#endif
虽然这显然使用了预处理器,而不是在运行时检查。但我有点困惑为什么您要指定您想在运行时进行此检查,因为建立具备或不具备调试功能的决定只能在编译之前做出...
据我所知,在Qt4中没有任何简单的方法可以检查您链接的Qt库是否已启用调试(尽管我注意到随着QLibraryInfo::isDebugBuild()
的添加,这看起来在Qt5中正在发生改变)。