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 公司的商标。所有其他商标均为各自所有者的财产。