qt_deploy_runtime_dependencies
実行ファイルに必要な Qt プラグイン、Qt ライブラリ、非 Qt ライブラリをデプロイします。
このコマンドはQt6
パッケージのCore
コンポーネントで定義されています:
find_package(Qt6 REQUIRED COMPONENTS Core)
Qt が提供する他の CMake コマンドとは異なり、qt_deploy_runtime_dependencies()
はデプロイスクリプトからのみ呼び出すことができます。Qt が提供する他のほとんどの CMake コマンドとは異なり、 はデプロイスクリプトからのみ呼び出すことができます。configure の段階でプロジェクトから直接呼び出すことはできません。
このコマンドは Qt 6.3 で導入されました。
注意: 通常、このコマンドを直接呼び出す必要はありません。このコマンドは他の上位コマンドによって内部的に使用されますが、よりカスタマイズされたデプロイメントロジックを実装したいプロジェクトでは便利です。
概要
qt_deploy_runtime_dependencies( EXECUTABLE executable [ADDITIONAL_EXECUTABLES files...] [ADDITIONAL_LIBRARIES files...] [ADDITIONAL_MODULES files...] [GENERATE_QT_CONF] [BIN_DIR bin_dir] [LIBEXEC_DIR libexec_dir] [LIB_DIR lib_dir] [PLUGINS_DIR plugins_dir] [QML_DIR qml_dir] [VERBOSE] [NO_OVERWRITE] [NO_APP_STORE_COMPLIANCE] [NO_TRANSLATIONS] [NO_COMPILER_RUNTIME] [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...] )
説明
アプリケーションをインストールする際に、依存するライブラリやプラグインもインストールすることが望ましい場合があります。アプリケーションが macOS アプリバンドルや Windows 実行ファイルの場合、qt_deploy_runtime_dependencies()
をインストール時のスクリプトから呼び出すことで、これらの依存関係をデプロイできます。システム以外の Qt ライブラリと適切な Qt プラグインがインストールされます。
Linux では、このコマンドはプロジェクトに含まれる Qt 関連のライブラリだけでなく、その他のライブラリもデプロイします。ただし、macOS や Windows で実行する場合、このコマンドはmacdeployqt
またはwindeployqt
のどちらかを使用し、Qt 固有のライブラリのみを配置します。
このコマンドは、基礎となるバイナリにリンク関係が存在するランタイムの依存関係のみを考慮します。qt_deploy_qml_imports() を参照してください。
引数
EXECUTABLE
オプションを指定する必要があります。
引数executable
には、ビルドディレクトリにある実行ファイルのパスを指定します。例えば、${CMAKE_CURRENT_BINARY_DIR}/MyApp.exe
、またはより動的に$<TARGET_FILE:MyApp>
。<TARGET_FILE:>
のようにジェネレータ式でラップされていない生のターゲット名を指定することはサポートされていません。
macOSアプリバンドルでは、executable
引数は、ベースインストール場所からの相対パスで、バンドルディレクトリへのパスを指定します。例えば、MyApp.app
、またはより動的に$<TARGET_FILE_NAME:MyApp>.app
。<TARGET_FILE_NAME:>
のような、ジェネレーターepxressionでラップされていない生のターゲット名を指定することはサポートされていません。
また、executable
に関連する他のバイナリの依存関係をインストールすることも望 ましいかもしれません。例えば、プロジェクトが提供するプラグインには、さらに依存 関係があるかもしれませんが、それらのプラグインは実行ファイルに直接リンク されないため、qt_deploy_runtime_dependencies()
は自動的にそれらを検出しません。ADDITIONAL_EXECUTABLES
、ADDITIONAL_LIBRARIES
、ADDITIONAL_MODULES
オプションを使用すると、依存関係を持つ追加のバイナリを指定できます (指定したバイナリ自体のインストールはプロジェクトの責任です)。これらのキーワードの命名は CMake の慣例に従いますので、Qt プラグインはADDITIONAL_MODULES
で指定します。それぞれの値は、ベースインストール場所からの相対パスでなければなりません。値は、EXECUTABLE
オプションと同じように、ジェネレーター式を使用できます。<TARGET_FILE_NAME:>
のようなジェネレータ式でラップされていない生のターゲット名の指定はサポートされていません。
Windows アプリケーションをインストールする場合、CMake のデフォルトのインストールディレクトリ構造に従うと、qt.confファイルが必要になることがよくあります。GENERATE_QT_CONF
オプションを指定すると、適切なqt.conf
ファイルがexecutable
と同じディレクトリに書き込まれます。qt.conf
ファイルのパスはCMAKE_INSTALL_xxxDIR
変数に基づいており、そのデフォルトは CMake のGNUInstallDirsモジュールによって提供されます。
以下の表のパラメータで、これらのデフォルトの一部を上書きできます。
パラメータ | 影響を受ける変数 | 注釈 |
---|---|---|
BIN_DIR | qt_deploy_bin_dir | |
LIBEXEC_DIR | qt_deploy_libexec_dir | Qt 6.7 以降 |
LIB_DIR | qt_deploy_lib_dir | |
PLUGINS_DIR | qt_deploy_plugins_dir | |
QML_DIR | qt_deploy_qml_dir |
GENERATE_QT_CONF
が提供されているかどうかに関わらず、executable
が macOS アプリバンドルである場合、qt.conf
ファイルが常に書き込まれます。アプリバンドル内のディレクトリレイアウトは Apple の要件によって決定されるため、この場合..._DIR
オプションも無視されます。
デプロイメントステップに関するより詳細な出力は、VERBOSE
オプションを指定することで有効にできます。または、最初のfind_package(Qt6)
呼び出しの前にプロジェクトでQT_ENABLE_VERBOSE_DEPLOYMENT変数を設定して、デプロイメント出力をデフォルトで冗長にすることもできます。
qt_deploy_runtime_dependencies()
コマンドはデフォルトで既存のファイルを上書きします(警告が表示される場合があります)。既存のファイルを上書きしないようにするには、NO_OVERWRITE
オプションを使用します。このオプションは現在、macOS と Windows のデプロイメントにのみ影響することに注意してください。
デフォルトでは、executable
が macOS アプリバンドルである場合、Apple の app store 要件に準拠した Qt プラグインと Qt ライブラリのみがデプロイされます。この制約を無効にするには、NO_APP_STORE_COMPLIANCE
オプションを指定します。
macOS 以外のプラットフォームでは、Qt の翻訳が自動的にデプロイされます。この動作を無効にするには、NO_TRANSLATIONS
を指定します。qt_deploy_translations() を使用して、カスタマイズされた方法でトランスレーションをデプロイします。
Windows デスクトップアプリケーションの場合、コンパイラに必要なランタイムファイルもデフォルトでインストールされます。これを防ぐには、NO_COMPILER_RUNTIME
を指定してください。
Qt 6.7 以降では、DEPLOY_TOOL_OPTIONS
を使用して、基盤となるデプロイツールに追加のオプションを渡すことができます。これは、基礎となるデプロイツールが macdeployqt または windeployqt の場合にのみ効果があります。
Linux では、ランタイム依存のデプロイは CMake のfile(GET_RUNTIME_DEPENDENCIES)
コマンドを使用します。PRE_INCLUDE_REGEXES
、PRE_EXCLUDE_REGEXES
、POST_INCLUDE_REGEXES
、POST_EXCLUDE_REGEXES
、POST_INCLUDE_FILES
、POST_EXCLUDE_FILES
のオプションは、このコンテキストでのみ意味があり、変更されずにfile(GET_RUNTIME_DEPENDENCIES)
に転送されます。 詳細は、このコマンドのドキュメントを参照してください。
Linuxでは、システム・ライブラリ・ディレクトリにある実行時依存関係は、 デフォルトでは配置されない。POST_EXCLUDE_REGEXES
が指定された場合、この自動除外は実行されない。
POST_EXCLUDE_REGEXES
のデフォルト値は、QT_DEPLOY_IGNORED_LIB_DIRS の値から構築されます。
例
以下の例は、アプリケーション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) set_target_properties(MyApp PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) # App bundles on macOS have an .app suffix if(APPLE) set(executable_path "$<TARGET_FILE_NAME:MyApp>.app") else() set(executable_path "\${QT_DEPLOY_BIN_DIR}/$<TARGET_FILE_NAME:MyApp>") endif() # Helper app, not necessarily built as part of this project. qt_add_executable(HelperApp helper.cpp) set(helper_app_path "\${QT_DEPLOY_BIN_DIR}/$<TARGET_FILE_NAME:HelperApp>") # Generate a deployment script to be executed at install time qt_generate_deploy_script( TARGET MyApp OUTPUT_SCRIPT deploy_script CONTENT " qt_deploy_runtime_dependencies( EXECUTABLE \"${executable_path}\" ADDITIONAL_EXECUTABLES \"${helper_app_path}\" GENERATE_QT_CONF VERBOSE )") # Omitting RUNTIME DESTINATION will install a non-bundle target to CMAKE_INSTALL_BINDIR, # which coincides with the default value of QT_DEPLOY_BIN_DIR used above, './bin'. # Installing macOS bundles always requires an explicit BUNDLE DESTINATION option. install(TARGETS MyApp HelperApp # Install to CMAKE_INSTALL_PREFIX/bin/MyApp.exe # and ./binHelperApp.exe BUNDLE DESTINATION . # Install to CMAKE_INSTALL_PREFIX/MyApp.app/Contents/MacOS/MyApp ) install(SCRIPT ${deploy_script}) # Add its runtime dependencies
次の例は、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() # Generate a deployment script to be executed at install time qt_generate_deploy_script( TARGET MyApp OUTPUT_SCRIPT deploy_script CONTENT " qt_deploy_runtime_dependencies( EXECUTABLE \"${executable_path}\" DEPLOY_TOOL_OPTIONS "${deploy_tool_options_arg}" GENERATE_QT_CONF VERBOSE )")
qt_generate_deploy_app_script(),qt_deploy_qt_conf(),qt_deploy_qml_imports()も参照してください 。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。