美文网首页Qt学习
引入Boost 库导致 lupdate 死循环问题

引入Boost 库导致 lupdate 死循环问题

作者: a44e29ab2558 | 来源:发表于2017-08-03 09:25 被阅读11次

    问题描述

    • 项目中引入了 boost 之后,会导致 lupdate 无法构建 ts 文件,进程无法结束,同时 CPU 占用率99% 以上,后台始终有 lupdate 进程,只能强制退出

    排查路径

    1. CPU 占用率达 99% 以上,且进程不会退出,初步推测是 lupdate 进程死循环
    2. 通过 QT 目录下的 MaintenanceTool.app 程序安装 QT 源代码, 5.9目录下多了一个 Src 文件夹
    3. 发现其他人也有遇到这个问题,
      1. https://bugreports.qt.io/browse/QTBUG-27936
      2. https://stackoverflow.com/questions/40471662/update-translation-file-using-boost-library-qt-c
    4. 我们可以看到,这里存在两种解决方案:
      1. 直接将 boost 文件加入到 TR_EXCLUDE 参数中,不参与翻译字段的索引
      2. 修改 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