このページでは

qt_generate_deploy_qml_app_script

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

このコマンドは、Qt6 パッケージのQml コンポーネントに定義されており、次のように読み込むことができます:

find_package(Qt6 REQUIRED COMPONENTS Qml)

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

警告: CMake バージョン 3.19 より前のバージョンを使用している場合は 、qt_add_executable() にMANUAL_FINALIZATION オプションを必ず渡し、この関数を呼び出す前にqt_finalize_target()を呼び出すようにしてください。

概要

qt_generate_deploy_qml_app_script(
    TARGET <target>
    OUTPUT_SCRIPT <var>
    [NO_UNSUPPORTED_PLATFORM_ERROR]
    [NO_TRANSLATIONS]
    [NO_COMPILER_RUNTIME]
    [NO_PLUGINS]                                  # since Qt 6.10
    [EXCLUDE_PLUGIN_TYPES type_or_target...]      # since Qt 6.10
    [INCLUDE_PLUGIN_TYPES type_or_target...]      # since Qt 6.10
    [EXCLUDE_PLUGINS name...]                     # since Qt 6.10
    [INCLUDE_PLUGINS name...]                     # since Qt 6.10
    [DEPLOY_TOOL_OPTIONS ...]
    [DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM]
    [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() ` を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

Qt 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() は、OUTPUT_SCRIPT オプションで指定された変数名に保存される名前のスクリプトを生成します。このスクリプトは、CMakeの生成時にのみ書き込まれます。これは、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_ERROR オプションとDEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM オプションの両方を指定してください。 後者のオプションを指定することで、プロジェクトの一部としてビルドされた QML モジュールが確実にインストールされるようになります。

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

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

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

注: コード署名識別子のように空白を含む値は 、QTP0007が NEW に設定されている場合にのみ、変更されずにデプロイメントツールに渡されます。OLD の動作では、そのような値は生成されたスクリプトに引用符なしで記述され、空白で分割されます。これに対処するため、プロジェクトでは以前はさらに一段階の引用符を追加して回避していました。 ポリシーを「NEW 」に設定する際は、その余分な引用符を削除してください。

注: バージョン指定なしの ` qt_generate_deploy_qml_app_script() ` は 、QTP0008 の値に応じて、引数を関数またはマクロのいずれかを通じて転送します。「OLD 」の挙動では、バックスラッシュまたは `${var} ` 参照を含む値はマクロ展開時に評価されるため、foo\\.dylib のような正規表現ではエスケープ処理が 1 段階失われます。これは、`DEPLOY_TOOL_OPTIONS ` および正規表現やファイルリストの引数に影響します。qt6_generate_deploy_qml_app_script() を直接呼び出すことで、この問題を回避できます。

オプションPRE_INCLUDE_REGEXES 、PRE_EXCLUDE_REGEXES 、POST_INCLUDE_REGEXES 、POST_EXCLUDE_REGEXES 、POST_INCLUDE_FILES 、およびPOST_EXCLUDE_FILES を指定することで、実行時依存関係の展開を制御できます。これらのオプションはすべてのプラットフォームに適用されるわけではなく、変更されずにqt_deploy_runtime_dependencies() に渡されます。

オプションEXCLUDE_PLUGINS 、EXCLUDE_PLUGIN_TYPES 、INCLUDE_PLUGINS 、およびINCLUDE_PLUGIN_TYPES は、Qt プラグインを選択するために使用されます。これらの詳細については、qt_deploy_runtime_dependencies()のドキュメントを参照してください。

NO_PLUGINS オプションを使用すると、プラグインのデプロイを完全に無効にできます。

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

例

次の例は、Qt Quick アプリを展開する方法を示しています。

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
    NO_UNSUPPORTED_PLATFORM_ERROR
    DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM
)
install(SCRIPT ${deploy_script})

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

# Pass the values on to the deploy tool unchanged, see \l {QTP0007}.
qt_policy(SET QTP0007 NEW)

set(deploy_tool_options_arg "")
if(APPLE)
    set(deploy_tool_options_arg
        --hardened-runtime
        "-codesign=Developer ID Application: Joe Developer (1234567890)"
    )
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()、QTP0007、およびQTP0008。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.