qt_generate_deploy_qml_app_script

QML アプリケーションのデプロイスクリプトを生成します。

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

find_package(Qt6 REQUIRED COMPONENTS Qml)

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

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

概要

qt_generate_deploy_qml_app_script(
    TARGET <target>
    OUTPUT_SCRIPT <var>
    [NO_UNSUPPORTED_PLATFORM_ERROR]
    [NO_TRANSLATIONS]
    [NO_COMPILER_RUNTIME]
    [DEPLOY_TOOL_OPTIONS ...]
    [DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM]
    [MACOS_BUNDLE_POST_BUILD]
    [PRE_INCLUDE_REGEXES regexes...]
    [PRE_EXCLUDE_REGEXES regexes...]
    [POST_INCLUDE_REGEXES regexes...]
    [POST_EXCLUDE_REGEXES regexes...]
    [POST_INCLUDE_FILES files...]
    [POST_EXCLUDE_FILES files...]
)

バージョンレスコマンドが無効になっている場合は、代わりにqt6_generate_deploy_qml_app_script() を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

QMLモジュールでもある実行可能なターゲットをインストールする場合、ターゲット自体に加えて多くのものをデプロイする必要があります。プロジェクトの Qt ライブラリやその他のライブラリ、 Qt プラグイン、アプリケーションが使用するすべての QML モジュールのランタイム部分などもインストールする必要があります。インストールされるレイアウトも、macOS のアプリバンドルでは他のプラットフォームと異なります。qt_generate_deploy_qml_app_script() はこのプロセスを簡略化するための便利なコマンドで、非 QML アプリケーションのqt_generate_deploy_app_script()に似ています。

このコマンドは、アプリケーションがQtの推奨するインストールディレクトリ構造に従っていることを想定しています。この構造は、GNUInstallDirsによって決定されるCMakeのデフォルトインストールレイアウトに基づいています(macOSアプリバンドルは例外で、代わりにAppleの要件に従います)。QMLモジュールは、プラットフォームに適した場所にインストールされます。macOS バンドルでは、各 QML モジュールのqmldir ファイルはResources/qml 以下の適切なサブディレクトリにインストールされ、モジュールのプラグイン(存在する場合)はPlugIns にインストールされます。アプリバンドルは、ベースとなるインストール場所に直接インストールされるものとします(後述の「例」を参照)。その他のプラットフォームでは、qmldir とモジュールのプラグインの両方が、qml 以下の適切なサブディレクトリにインストールされます。

qt_generate_deploy_qml_app_script() はスクリプトを生成し、その名前は オプションで指定した変数に格納されます。このスクリプトは CMake 生成時にのみ書き込まれます。このスクリプトは、OUTPUT_SCRIPT install( TARGETS) を使用してアプリケーションのターゲットがインストールされた後に、install(SCRIPT)コマンドと共に使用されることを意図しています。

デプロイスクリプトは、標準のインストールレイアウトに適したオプションセットでqt_deploy_qml_imports() を呼び出します。macOS アプリバンドルと Windows ターゲットの場合は、qt_deploy_runtime_dependencies() も呼び出します。

qt_deploy_runtime_dependencies でサポートされていないプラットフォームに対してqt_generate_deploy_qml_app_script() を呼び出すと、NO_UNSUPPORTED_PLATFORM_ERROR オプションが与えられていない限り、致命的なエラーになります。このオプションが指定され、サポートされていないプラットフォーム用にプロジェクトがビルドされた場合、QMLモジュールも通常のランタイム依存ファイルもインストールされません。QMLモジュールが確実にインストールされるようにするには、NO_UNSUPPORTED_PLATFORM_ERRORDEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM の両方のオプションを指定します。後者のオプションを指定すると、プロジェクトの一部としてビルドされたQMLモジュールが確実にインストールされます。

MACOS_BUNDLE_POST_BUILD オプションは、target が macOS アプリバンドルである場合に、追加のステップを有効にします。ビルド後のルールとして、ビルドディレクトリからアプリケーションを直接実行できるように、インポートした QML モジュールをデプロイするためのデプロイスクリプトが作成されます(基本的に、qmldir ファイルとプラグインへのシンボリックリンクのみ)。これは通常、アプリケーションの開発をサポートするために望ましいものです。MACOS_BUNDLE_POST_BUILD は他のすべてのプラットフォームでは無視されます。

macOS 以外のプラットフォームでは、Qt の翻訳が自動的にデプロイされます。この動作を抑制するには、NO_TRANSLATIONS を指定してください。qt_deploy_translations() を使用して、カスタマイズした方法でトランスレーションをデプロイします。

Windows デスクトップアプリケーションの場合、コンパイラに必要なランタイムファイルもデフォルトでインストールされます。これを防ぐには、NO_COMPILER_RUNTIME を指定してください。

Qt 6.7 以降では、DEPLOY_TOOL_OPTIONS を使用して、基盤となるデプロイツールに追加のオプションを渡すことができます。これは、基盤となるディプロイメント ツールが macdeployqt または windeployqt の場合にのみ効果があります。

PRE_INCLUDE_REGEXESPRE_EXCLUDE_REGEXESPOST_INCLUDE_REGEXESPOST_EXCLUDE_REGEXESPOST_INCLUDE_FILESPOST_EXCLUDE_FILES のオプションを指定すると、ランタイム依存のデプロイメントを制御できます。これらのオプションはすべてのプラットフォームに適用されるわけではなく、そのままqt_deploy_runtime_dependencies() に転送されます。

非 QML アプリケーションをデプロイする場合は、代わりにqt_generate_deploy_app_script() を使用してください。同じターゲットに対してqt_generate_deploy_qml_app_script()qt_generate_deploy_app_script() の両方を呼び出すのはエラーです。

次の例は、QtQuick アプリをデプロイする方法を示しています。

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
)

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

qt_generate_deploy_qml_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    MACOS_BUNDLE_POST_BUILD
    NO_UNSUPPORTED_PLATFORM_ERROR
    DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
)
install(SCRIPT ${deploy_script})

次の例では、基礎となるデプロイツールに追加のオプションを渡す方法を示します。

set(deploy_tool_options_arg "")
if(APPLE)
    set(deploy_tool_options_arg --hardened-runtime)
elseif(WIN32)
    set(deploy_tool_options_arg --no-compiler-runtime)
endif()

qt_generate_deploy_qml_app_script(
    ...
    DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg}
)
install(SCRIPT ${deploy_script})

qt_standard_project_setup()およびqt_generate_deploy_app_script()も参照して ください。

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