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_lreleaserelease_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. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自主人的财产。