引入Boost 库导致 lupdate 死循环问题
问题描述
- 项目中引入了 boost 之后,会导致 lupdate 无法构建 ts 文件,进程无法结束,同时 CPU 占用率99% 以上,后台始终有 lupdate 进程,只能强制退出
-
排查路径
- CPU 占用率达 99% 以上,且进程不会退出,初步推测是 lupdate 进程死循环
- 通过 QT 目录下的 MaintenanceTool.app 程序安装 QT 源代码, 5.9目录下多了一个 Src 文件夹
- 发现其他人也有遇到这个问题,
- https://bugreports.qt.io/browse/QTBUG-27936
- https://stackoverflow.com/questions/40471662/update-translation-file-using-boost-library-qt-c
- 我们可以看到,这里存在两种解决方案:
- 直接将 boost 文件加入到 TR_EXCLUDE 参数中,不参与翻译字段的索引
-
修改 QT Creator 中 lupdate 源代码,去除搜索 INCLUDE_PATH 变量的步骤,改动代码部分为 qttools/src/linguist/lupdate/main.cpp 中的,
解决方案
- 综上两个方案,方案一其实是属于临时性解决,如果后续有其他库也存在该问题,则需要重新添加,
- 方案二直接移除 INCLUDE_PATH 的索引,大大提高 update 速度,因为移除了很多不必要的遍历,理论上也不会对多语言造成影响,因此推荐方案二解决
- 附上已经编译好的 lupdate, 替换 QT 目录下的对应可执行文件即可: lupdate
本文标题:引入Boost 库导致 lupdate 死循环问题
本文链接:https://www.haomeiwen.com/subject/xjvulxtx.html
网友评论