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]
    [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( TARGETS) を使用してアプリケーションのターゲットがインストールされた後に、install(SCRIPT)コマンドと共に使用されることを意図しています。

デプロイスクリプトは、標準のインストールレイアウトに適したオプションセットで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 の場合にのみ効果があります。

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() に転送されます。

次の例は、アプリケーションを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 に異なるオプションを渡す方法を示します。

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_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()も参照してください

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