从Qt5.3切换到5.4时,我的自定义消息处理程序突然无法从使用qDebug()、qWarning()和qCritical()的Qt库中接收到行号或文件名。
这些文档表明这是QT5.4中的一个更改。要获取这些信息,必须显式定义QT_MESSAGELOGCONTEXT。所以我就这么做了。我下载了QT5.4源代码,配置了它,编译了它,并设置了我的代码来使用新的库。问题是,我仍然没有得到文件名和行号信息。
下面是我如何配置Qt构建:
configure.bat -platform win32-msvc2010 -debug-and-release -nomake examples -nomake tests -opensource -opengl desktop -c++11 -no-strip -D QT_MESSAGELOGCONTEXT发布于 2015-02-04 23:23:23
--您不需要用该定义重新构建Qt,您需要使用已启用的定义构建应用程序。
行为改变背后的理由很简单:--您可能不希望应用程序可能具有的调试或警告输出中的敏感信息(函数名、行号)泄漏出去。
因此,默认情况下,在版本中构建函数名和行号,删除。另一方面,它们在调试构建中仍然可用,因此您可能实际上避免使用该定义,而只是在调试模式下重新编译应用程序。
如果您想启用函数名和行号,即使是在版本构建时,也要打开应用程序的.pro文件,并添加以下内容
DEFINES += QT_MESSAGELOGCONTEXT然后重新运行qmake并重建整个应用程序。
https://stackoverflow.com/questions/28332040
复制相似问题