qt_deploy_qml_imports

実行ファイルに必要なQMLモジュールのランタイムコンポーネントをデプロイします。

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

find_package(Qt6 REQUIRED COMPONENTS Qml)

Qt が提供する他の CMake コマンドとは異なり、qt6_deploy_qml_imports はデプロイスクリプトからのみ呼び出すことができます。Qt が提供する他のほとんどの CMake コマンドとは異なり、 はデプロイスクリプトからのみ呼び出すことができます。

警告 3.19 よりも低い CMake バージョンを使用している場合は、この関数を呼び出す前に、qt6_add_executable()MANUAL_FINALIZATION オプションを渡し、qt6_finalize_target()を呼び出していることを確認してください。

概要

qt_deploy_qml_imports(
    TARGET target
    [QML_DIR qml_dir]
    [PLUGINS_FOUND var_name]
    [NO_QT_IMPORTS]
)

説明

注意: 通常、このコマンドを直接呼び出す必要はありません。このコマンドは他の上位のコマンドによって内部的に使用されますが、よりカスタマイズされたデプロイメントロジックを実装したいプロジェクトでは有用です。

QMLを使用するアプリケーションをインストールする際、どのQMLモジュールと、そのQMLモジュールのどの部分をインストールする必要があるのかを調べるのは、決して容易なことではありません。QMLプラグインはアプリケーションの実行ファイルに直接リンクされていないため、qt_deploy_runtime_dependencies()はこれらのQMLモジュールを見つけることができません。qt6_deploy_qml_imports コマンドはqt_deploy_runtime_dependencies() を補完する必要なロジックを提供し、アプリケーションによってインポートされたすべての QML モジュールのランタイム部分をデプロイします。

TARGET オプションは必須で、実行ファイル(macOS ではアプリバンドル)であり、QML モジュールでもあるtarget を指定します。qt_add_qml_module()またはqt_target_qml_sources()によってtarget に追加されたすべての QML ソースは、QML のインポートについて再帰的にスキャンされます。qt_add_qml_module()NO_IMPORT_SCAN オプションをつけてはいけません。インポートされた QML モジュールのqmldir ファイルとプラグインがデプロイされます。Qt が提供する QML モジュールのデプロイをスキップするには、NO_QT_IMPORTS オプションを指定します。

デフォルトでは、インポートされた QML モジュールのランタイム部分は、macOS アプリバンドルターゲットの場合はResources/qml ディレクトリに、その他のプラットフォームの場合は、ベースインストール位置の下にあるqml ディレクトリにデプロイされます。macOS以外の場合は、QML_DIR オプションを使って、このデフォルトの選択を上書きすることができます。

このコマンドは、デプロイするすべてのQMLプラグインのリストをPLUGINS_FOUND オプションで指定された変数に格納します。これは、その後のqt_deploy_runtime_dependencies() の呼び出しでADDITIONAL_MODULES 引数として渡されることがよくあります。

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 6.3 REQUIRED COMPONENTS Core Qml)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)
qt_add_qml_module(MyApp
    URI Application
    VERSION 1.0
    QML_FILES main.qml MyThing.qml
)

# The following script must only be executed at install time
set(deploy_script "${CMAKE_CURRENT_BINARY_DIR}/deploy_MyApp.cmake")

file(GENERATE OUTPUT ${deploy_script} CONTENT "
include(\"${QT_DEPLOY_SUPPORT}\")
qt_deploy_qml_imports(
    # Deploy QML modules used by MyApp
    TARGET MyApp

    # The found QML plugins are stored in the plugins_found variable
    PLUGINS_FOUND plugins_found

    # The QML modules will be deployed into a custom directory
    QML_DIR \"myqmldir\"

    # Qt QML modules will be skipped, only project-created QML modules will be deployed
    NO_QT_IMPORTS
)
# Deploy application runtime dependencies and runtime dependencies
# of the found QML module plugins.
qt_deploy_runtime_dependencies(
    EXECUTABLE $<TARGET_FILE:MyApp>
    ADDITIONAL_MODULES \${plugins_found}
)
")

install(TARGETS MyApp)
install(SCRIPT ${deploy_script})

qt_generate_deploy_qml_app_script(),qt_deploy_runtime_dependencies(),QT_DEPLOY_QML_DIRも参照してください

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