qt_add_lrelease

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

命令的定义在 LinguistTools 组件对于 Qt6 package. Load the package with:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
					

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

描述

Creates a target ${target}_lrelease to transform .ts files into .qm files with lrelease .

参数 target is an existing executable or library target that contains sources with translatable strings.

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 makes ${target} depend on ${target}_lrelease . This ensures that the .qm files are always up-to-date when ${target} is built. This behavior can be turned off with NO_TARGET_DEPENDENCY . In this case, the user must build the ${target}_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 .

范例

Add the targets myapp_lrelease and update_translations for updating the .ts file of an application myapp . Also, install the generated .qm 文件。

qt_add_lrelease(myapp
    TS_FILES myapp_de.ts
    QM_FILES_OUTPUT_VARIABLE qm_files)
install(FILES ${qm_files} DESTINATION "translations")