qt_generate_deploy_app_script
アプリケーションのデプロイスクリプトを生成します。
このコマンドは、Qt6 パッケージのCore コンポーネントに定義されており、次のように読み込むことができます:
find_package(Qt6 REQUIRED COMPONENTS Core)このコマンドは Qt 6.3 で導入されました。
注:この コマンドは 現在、Windows、macOS、およびLinuxでのみサポートされています。
概要
qt_generate_deploy_app_script(
TARGET target
OUTPUT_SCRIPT <var>
[NO_TRANSLATIONS]
[NO_COMPILER_RUNTIME]
[NO_UNSUPPORTED_PLATFORM_ERROR]
[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 ...]
[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_app_script() ` を使用してください。このコマンドと同じ引数セットをサポートしています。
説明
install(TARGETS)を使用して実行可能ターゲットをインストールしても、そのターゲットの実行ファイルのみがインストールされます(macOS アプリバンドルは例外で、バンドル全体がコピーされます)。実行ファイルが依存するその他のライブラリやプラグインは、ユーザー自身が明示的にインストールする必要があります。qt_generate_deploy_app_script() は、そのプロセスを簡略化するための便利なコマンドです。 このコマンドは、アプリケーションが Qt が推奨するインストールディレクトリ構造にかなり厳密に従っていることを前提としています。この構造は、GNUInstallDirsによって決定される CMake のデフォルトのインストールレイアウトに基づいています(ただし、macOS アプリバンドルは Apple の要件に従います)。
このコマンドは、OUTPUT_SCRIPT オプションで指定された変数に名前が格納されるスクリプトを生成します。このスクリプトは、CMakeによる生成時にのみ作成されます。これは、install(SCRIPT)コマンドと併用することを想定しており、install(TARGETS)を使用してアプリケーションのターゲットがインストールされた後に実行する必要があります。
デプロイスクリプトは、標準的なインストールレイアウトに適したオプションセットを指定してqt_deploy_runtime_dependencies() を呼び出します。現在、これは
- macOS ホスト上でビルドされた macOS アプリバンドル、
- Linuxホスト上でビルドされたLinux実行ファイル、
- およびWindowsホスト上でビルドされたWindows実行ファイル。
Linuxホスト上でのWindows実行ファイルのクロスビルドや、同様のシナリオは現在サポートされていません。このような場合にqt_generate_deploy_app_script() を呼び出すと、NO_UNSUPPORTED_PLATFORM_ERROR オプションが指定されていない限り、致命的なエラーが発生します。
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_app_script() ` は 、`QTP0008` の値に応じて、引数を関数またはマクロのいずれかを介して渡します。「OLD 」の動作では、バックスラッシュや `${var} ` への参照を含む値は、マクロ展開時に評価されるため、foo\\.dylib のような正規表現ではエスケープが 1 段階失われます。これは `DEPLOY_TOOL_OPTIONS ` および正規表現やファイルリストの引数に影響します。qt6_generate_deploy_app_script() を直接呼び出すことで、この問題を回避できます。
QML アプリケーションをデプロイする場合は、代わりにqt_generate_deploy_qml_app_script()を使用してください。
カスタムデプロイスクリプトを生成するには、qt_generate_deploy_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 オプションを使用すると、プラグインの展開を完全に無効にすることができます。
例
以下の例は、MyApp を使用してアプリケーションをデプロイする方法を示しています。
cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)
find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()
qt_add_executable(MyApp main.cpp)
install(TARGETS MyApp
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
qt_generate_deploy_app_script(
TARGET MyApp
OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})次の例は、DEPLOY_TOOL_OPTIONS パラメータを使用して、macdeployqt および windeployqt に異なるオプションを渡す方法を示しています。
# 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_app_script(
TARGET MyApp
OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg}
)
install(SCRIPT ${deploy_script})qt_standard_project_setup()、qt_generate_deploy_script()、qt_generate_deploy_qml_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.