qt_add_lrelease
将目标添加到将 Qt Linguist .ts 文件转换为 .qm 文件。
此命令在 Qt6
包的 LinguistTools
组件中定义。使用以下命令加载包:
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
此命令从 Qt 6.2 开始引入。
简述
自 6.7 以来
qt_add_lrelease(TS_FILES file1.ts [file2.ts ...] [LRELEASE_TARGET target-name] [EXCLUDE_FROM_ALL] [NO_GLOBAL_TARGET] [QM_FILES_OUTPUT_VARIABLE variable-name] [OPTIONS ...])
自 6.2(已弃用)
qt_add_lrelease(target TS_FILES file1.ts [file2.ts ...] [NO_TARGET_DEPENDENCY] [NO_GLOBAL_TARGET] [QM_FILES_OUTPUT_VARIABLE variable-name] [OPTIONS ...])
如果禁用了 无版本命令,则请改用 qt6_add_lrelease()
。它支持与该命令相同的参数集。
注意:在不同的目录作用域中调用 qt_add_lrelease
要求至少 CMake 版本 3.18。
说明
使用 lrelease 创建一个自定义命令,将 .ts
文件转换为 .qm
文件。
自定义命令的执行是由默认构建的自定义目标驱动的。该自定义目标的名称默认为 ${PROJECT_NAME}_lrelease
。进一步的 qt_add_lrelease
调用将创建带有递增数字的后缀的目标名称。可以使用 LRELEASE_TARGET
选项指定自定义目标名称。
必须使用 TS_FILES
参数指定 .ts
文件。
该函数旨在与 qt_add_lupdate 一起使用。有关方便包装,请参阅 qt_add_translations。
选项
可以设置其他 OPTIONS
,这些选项应该在调用 lrelease
时传递。您可以在 lrelease 文档 中找到可能选项。
默认情况下,.qm
文件将放置在当前构建目录(CMAKE_CURRENT_BINARY_DIR
)中。要更改此设置,可以将 OUTPUT_LOCATION
设置为源 .ts
文件的一个属性。
例如,使用以下代码,.qm
文件将在当前构建目录下的 translations
目录中生成。
set_source_files_properties(app_en.ts app_de.ts PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
处理生成的 .qm 文件
要进一步处理生成的 .qm
文件,例如创建安装规则,请使用 qt_add_lrelease
将 .qm
文件的路径存储在变量中。将 QM_FILES_OUTPUT_VARIABLE <variable-name>
传递给该函数。
默认构建
默认情况下,命令创建一个自定义目标并将其添加到默认构建目标。这确保了在构建项目时 .qm
文件始终是最新的。可以通过 EXCLUDE_FROM_ALL
参数关闭此行为。在这种情况下,用户必须手动构建 ${PROJECT_NAME}_lrelease
目标。
伞状目标
除了目标 ${target}_lrelease
,还创建了一个总的目标 release_translations
。这个目标将构建所有使用 qt_add_lrelease
创建的 ${target}_lrelease
目标。
将 NO_GLOBAL_TARGET
传递给 qt_add_lrelease
以防止这种行为。
可以通过在调用 qt_add_lrelease
之前设置变量 QT_GLOBAL_LRELEASE_TARGET
来覆盖此目标的名称。
已废弃的命令签名
较早版本的 qt_add_lrelease
接收目标作为第一个参数。这仍然可行,但已过时。
示例
为将给定的 .ts
文件转换为 .qm
文件,添加 myapp_lrelease
和 release_translations
目标。此外,安装生成的 .qm
文件。默认情况下,将构建 myapp_lrelease
目标。
project(myapp) ... qt_add_lrelease( TS_FILES myapp_de.ts myapp_fr.ts QM_FILES_OUTPUT_VARIABLE qm_files ) install(FILES ${qm_files} DESTINATION "translations")
您可以通过传递 LRELEASE_TARGET
参数来指定创建的目标的名称。
qt_add_lrelease( LRELEASE_TARGET create_myapp_qm_files TS_FILES myapp_de.ts myapp_fr.ts QM_FILES_OUTPUT_VARIABLE qm_files )
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献属于其各自的主人。本文档根据自由软件基金会发布的 GNU自由文档许可证第1.3版 的条款获得许可。Qt 及其相关标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自主人的财产。