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