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_ERROR
とDEPLOY_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_REGEXES
、PRE_EXCLUDE_REGEXES
、POST_INCLUDE_REGEXES
、POST_EXCLUDE_REGEXES
、POST_INCLUDE_FILES
、POST_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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。