qt_add_lrelease

Add targets to transform Qt Linguist .ts files into .qm files.

命令的定义在 LinguistTools 组件对于 Qt6 包。加载包采用:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
					

该命令在 Qt 6.2 引入。

概要

Since 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 ...])
					

Since 6.2 (deprecated):

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 in a directory scope different than the target directory scope requires at least CMake version 3.18.

描述

Creates a custom command to transform .ts files into .qm files with lrelease .

The execution of the custom command is driven by a custom target that is built by default. The name of that custom target defaults to ${PROJECT_NAME}_lrelease . Further calls of qt_add_lrelease will create target names with an increasing number appended. The custom target name can be specified with the LRELEASE_TARGET 选项。

The .ts files must be specified with the argument TS_FILES .

This function is designed to be used in conjunction with qt_add_lupdate . See also the convenience wrapper qt_add_translations .

选项

可以设置额外 选项 that should be passed when lrelease is invoked. You can find possible options in the lrelease documentation .

默认情况下, .qm files will be placed in the current build directory ( CMAKE_CURRENT_BINARY_DIR ). To change this, you can set OUTPUT_LOCATION as a property of the source .ts 文件。

For example, with the following code, the .qm files are generated in a translations directory below the current build directory.

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

Processing Generated .qm Files

To further process the generated .qm files, for example to create install rules, qt_add_lrelease can store the paths of the .qm files in a variable. Pass QM_FILES_OUTPUT_VARIABLE <variable-name> to the function for that.

Build by Default

By default, the command creates a custom target that is added to the default build target. This ensures that the .qm files are always up-to-date when the project is built. This behavior can be turned off with the EXCLUDE_FROM_ALL argument. In this case, the user must build the ${PROJECT_NAME}_lrelease target manually.

Umbrella Target

In addition to the target ${target}_lrelease , an umbrella target release_translations is created. This target will build all ${target}_lrelease targets that were created with qt_add_lrelease .

Pass NO_GLOBAL_TARGET to qt_add_lrelease to prevent this behavior.

The name of this target can be overridden by setting the variable QT_GLOBAL_LRELEASE_TARGET before calling qt_add_lrelease .

Deprecated Command Signature

Older versions of qt_add_lrelease took a target as the first argument. This is still possible but deprecated.

范例

Add the targets myapp_lrelease and release_translations for transforming the given .ts files into .qm files. Also, install the generated .qm files. The target myapp_lrelease is built by default.

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")
					

You can specify the name of the created target by passing the 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
)