在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令
Posted
技术标签:
【中文标题】在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令【英文标题】:run lupdate and lrelease command from qt creator in linux 【发布时间】:2020-08-03 07:24:13 【问题描述】:我想在构建时从 qtcreator 运行 lupdate 和 lrelease 命令。 是否可以? 如果是那怎么办?
注意:我正在使用来自 linux 终端的 lupdate 和 lrelease 命令,它工作正常,但我想在构建时从 qt creator 运行这些命令。
【问题讨论】:
【参考方案1】:假设您使用的是 qmake,您应该使用 TRANSLATIONS
变量:
https://doc.qt.io/qt-5/qmake-variable-reference.html#translations
This页面有一些例子:
HEADERS = main-dlg.h \
options-dlg.h
SOURCES = main-dlg.cpp \
options-dlg.cpp \
main.cpp
FORMS = search-dlg.ui
TRANSLATIONS = superapp_dk.ts \
superapp_fi.ts \
superapp_no.ts \
superapp_se.ts
Hello tr() Example 更详细地解释了该过程:
请注意,文件扩展名是 .ts,而不是 .qm。 .ts 翻译 源格式设计用于在应用程序的 发展。程序员或发布经理运行 lupdate 程序 使用提取的源文本生成和更新 TS 文件 从源代码。翻译人员使用读取和更新 TS 文件 Qt Linguist 添加和编辑他们的翻译。
[...]
翻译完成后,lrelease 程序将用于 将 TS 文件转换为 QM Qt 消息文件格式。 QM 格式 是一种紧凑的二进制格式,旨在提供非常快速的查找 表现。 lupdate 和 lrelease 都读取了项目的所有源码 和头文件(在 HEADERS 和 SOURCES 行中指定) 项目文件)并提取出现在 tr() 函数中的字符串 来电。
lupdate 用于创建和更新消息文件(hellotr_la.ts 在这种情况下)以使它们与源代码保持同步。这是安全的 随时运行 lupdate,因为 lupdate 不会删除任何信息。 比如可以放在makefile里面,那么TS文件就是 每当源更改时更新。
【讨论】:
是的,您上面的建议是正确的。但这不是我所期待的。我的期望是从 qt creator 而不是分别从 linux 终端运行命令行工具 lupdate 和 lrelease。在构建时,我希望这些命令行工具能够运行并生成 .ts 和 .qm 文件。有可能吗?? 听起来和您所期望的完全一样。你试过了吗?我已经用另一个文档页面的引用更新了答案,该页面更详细。【参考方案2】:在您的 Qt Creator 中,转到 Projects > Build Steps 在那里,您可以使用命令 lupdate 和 lrelease
添加两个自定义流程步骤【讨论】:
以上是关于在 linux 中从 qt creator 运行 lupdate 和 lrelease 命令的主要内容,如果未能解决你的问题,请参考以下文章
在 qt creator 中从 ..qml 文件生成 .cpp 和 .h 文件
如何在 QT Creator 开源版本中为嵌入式 linux 交叉编译 qt