qt_collect_translation_source_targets

收集适合翻译的目标。

该命令定义在 Qt6 包的 LinguistTools 成分中。使用以下命令加载包:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

此命令是在 Qt 6.7 中引入的。

速览

qt_collect_translation_source_targets(out_var [DIRECTORY path])

如果禁用了 无版本命令,请改用 qt6_collect_translation_source_targets()。它与本命令支持相同的参数集。

描述

收集给定 DIRECTORY 和所有子目录中适合翻译的目标。如果没有指定 DIRECTORY,则在 CMAKE_CURRENT_SOURCE_DIR 开始收集目标。

该命令将目标列表存储在第一个参数指定的变量中。

从翻译中排除目标

默认情况下,所有未导入的可执行文件和库目标都适合翻译。

可以通过设置 目标属性 QT_EXCLUDE_FROM_TRANSLATION 来排除单个目标。

可以通过设置 目录属性 QT_EXCLUDE_FROM_TRANSLATION 来排除一定目录下的目标。

何时调用此命令

qt_collect_translation_source_targets 命令读取 BUILDSYSTEM_TARGETS 目录属性。因此,它只收集已经创建的目标。在调用 qt_collect_translation_source_targets 之后创建的目标不会被收集。

要收集构建系统的所有目标,请在顶级 CMakeLists.txt 的末尾调用 qt_collect_translation_source_targets 或使用 cmake_language(DEFER CALL) 在顶级目录作用域末尾设置 i18n。

示例

qt_collect_translation_source_targets 的结果用作 qt_add_lupdate 的输入。

add_subdirectory(src)         # The actual application is defined here.

# All targets that have been defined up to this point will be in i18n_targets.
qt_collect_translation_source_targets(i18n_targets)
qt_add_lupdate(SOURCE_TARGETS ${i18n_targets})

# No targets from this directory are in i18n_targets.
add_subdirectory(tests)       # Unit tests - we don't want to translate those.

在 CMake 3.19 及以上版本中,您可以在目录作用域的末尾收集源目标。这样,可以在所有目标定义之前调用 qt_collect_translation_source_targets。但是,您需要通过将目录属性 QT_EXCLUDE_FROM_TRANSLATION 设置为 ON 来排除测试。

function(set_up_translations)
    qt_collect_translation_source_targets(i18n_targets)
    qt_add_lupdate(SOURCE_TARGETS ${i18n_targets})
endfunction()

cmake_language(DEFER CALL set_up_translations)

add_subdirectory(src)         # The actual application is defined here.
add_subdirectory(tests)       # Unit tests - we don't want to translate those.
set_property(DIRECTORY tests PROPERTY QT_EXCLUDE_FROM_TRANSLATION ON)

© 2024 Qt 公司 Ltd. 本文档中的文档贡献是各自所有者的版权。此文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 和相应的标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。