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_add_lupdate の入力としてqt_collect_translation_source_targets の結果を使用します。

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_TRANSLATIONON に設定して、テストを除外する必要があります。

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)

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。