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

选项

你可以设置调用lrelease 时应传递的其他OPTIONS 。你可以在lrelease 文档中找到可能的选项。

默认情况下,.qm 文件将放置在当前编译目录下 (CMAKE_CURRENT_BINARY_DIR)。要改变这种情况,可以在调用qt_add_lrelease 之前将OUTPUT_LOCATION 设置为源文件.ts 的属性。

例如,使用以下代码,.qm 文件将在当前构建目录下的translations 目录中生成。

set_source_files_properties(app_en.ts app_de.ts
    PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
qt_add_lrelease(TS_FILES myapp_en.ts myapp_de.ts)

处理生成的 .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 将目标作为第一个参数。现在仍可使用,但已被弃用。

示例

添加目标myapp_lreleaserelease_translations ,将给定的.ts 文件转换为.qm 文件。同时,安装生成的.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
)

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.