qt_add_lrelease

Qt Linguistの.tsファイルを.qmファイルに変換するターゲットを追加します。

このコマンドはQt6 パッケージのLinguistTools コンポーネントで定義されています。でパッケージをロードします:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

このコマンドは Qt 6.2 で導入されました。

概要

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

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 を呼び出すには、少なくとも CMake バージョン 3.18 が必要です。

説明

lrelease を使用して.ts ファイルを.qm ファイルに変換するカスタムコマンドを作成します。

カスタムコマンドの実行は、デフォルトでビルドされるカスタムターゲットによって駆動されます。カスタム・ターゲットの名前は、デフォルトで${PROJECT_NAME}_lrelease になります。さらにqt_add_lrelease を呼び出すと、数字が付加されたターゲット名が作成される。カスタム・ターゲット名はLRELEASE_TARGET オプションで指定できる。

.ts ファイルは、引数TS_FILES で指定する必要がある。

この関数はqt_add_lupdateと組み合わせて使用するように設計されています。便利なラッパーのqt_add_translations も参照してください。

オプション

lrelease が呼び出されたときに渡されるべき追加のOPTIONS を設定することができます。可能なオプションはlrelease のドキュメントにあります。

デフォルトでは、.qm ファイルはカレントビルドディレクトリ (CMAKE_CURRENT_BINARY_DIR) に置かれます。これを変更するには、ソース.ts ファイルのプロパティとしてOUTPUT_LOCATION を設定します。

例えば、以下のコードでは、.qm ファイルは現在のビルドディレクトリの下のtranslations ディレクトリに生成されます。

set_source_files_properties(app_en.ts app_de.ts
    PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")

生成された .qm ファイルの処理

生成された.qm ファイルをさらに処理するために、例えばインストールルールを作成するために、qt_add_lrelease.qm ファイルのパスを変数に格納することができます。QM_FILES_OUTPUT_VARIABLE <variable-name> を関数に渡してください。

デフォルトでのビルド

デフォルトでは、このコマンドはデフォルトのビルド・ターゲットに追加されるカスタム・ターゲットを作成します。これにより、プロジェクトがビルドされるときに.qm ファイルが常に最新の状態になります。この動作はEXCLUDE_FROM_ALL 引数でオフにすることができます。この場合、ユーザーは${PROJECT_NAME}_lrelease ターゲットを手動でビルドする必要があります。

アンブレラターゲット

ターゲット${target}_lrelease に加えて、アンブレラターゲットrelease_translations が作成されます。このターゲットは、qt_add_lrelease で作成されたすべての${target}_lrelease ターゲットを構築します。

この動作を防ぐには、NO_GLOBAL_TARGETqt_add_lrelease に渡します。

このターゲットの名前は、qt_add_lrelease を呼び出す前に変数QT_GLOBAL_LRELEASE_TARGET を設定することでオーバーライドできます。

非推奨コマンドシグネチャ

旧バージョンのqt_add_lrelease は、第1引数にターゲットを取っていた。これはまだ可能ですが、非推奨です。

与えられた.ts ファイルを.qm ファイルに変換するために、myapp_lreleaserelease_translations のターゲットを追加する。また、生成された.qm ファイルをインストールする。ターゲットmyapp_lrelease はデフォルトでビルドされる。

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

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
)

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