Qt for macOS - デプロイメント
このドキュメントでは、macOS のバンドルを作成し、アプリケーションが実行時に必要なリソースを見つけられるようにする方法を説明します。Qt ソースパッケージに付属しているPlug & Paintサンプルアプリケーションのデプロイを例に、その手順を説明します。
macOS 用の Qt インストーラには、ここで説明する手順を自動化するデプロイツールが含まれています。
バンドル
macOSでは、GUIアプリケーションはバンドルからビルドして実行する必要があります。バンドルとは、Finderで見たときに単一のエンティティとして表示されるディレクトリ構造のことです。アプリケーションのバンドルには通常、実行ファイルと必要なすべてのリソースが含まれています。以下はアプリケーションバンドル構造のスナップショットです:
バンドルはユーザーに多くの利点を提供します:
- バンドルはユーザに多くの利点を提供します。
- バンドルに関する情報はコードからアクセスできます。
これは macOS 固有のものであり、このドキュメントの範囲を超えています。バンドルの詳細については、Apple Developer Web サイトを参照してください。
CMake でアプリケーションをバンドルとしてビルドするには、実行ターゲットの MACOSX_BUNDLE
プロパティを設定します:
set_target_properties(plugandpaint PROPERTIES MACOSX_BUNDLE TRUE )
qmake
自動的にアプリケーションのバンドルを生成します。これを無効にするには、アプリケーションのプロジェクトファイル( )に以下の記述を追加します:.pro
CONFIG-=app_bundle
スタティックリンク
デプロイするファイルが少なく、シンプルにしたい場合は、静的にリンクされたライブラリを使用してアプリケーションをビルドすることができます。
Qt を静的にビルドする
Qt ライブラリの静的バージョンをインストールすることから始めます。プラグインは使用できず、画像フォーマットやSQLドライバなどの依存ライブラリは静的リンクでビルドしなければならないことを覚えておいてください。
cd /path/to/Qt ./configure -static <other parameters>
configure
-help を実行することで、利用可能な様々なオプションを確認することができます。
静的バージョンの Qt にアプリケーションをリンクする
Qt を静的にビルドしたら、次はビルドファイルを再生成してアプリケーションを再構築します。
CMake を使う
Qt の静的ビルドで Qt プラグインをリンクするなどの追加ロジックを提供するqt_add_executable
wrapper コマンドを必ず使用してください。
Apple プラットフォーム用にビルドするには、cmake_minimum_required()
を 3.21.1 以降に設定する必要があります:
cmake_minimum_required(VERSION 3.21.1)
アプリケーションを含むディレクトリに移動します:
cd /path/to/Qt/examples/widgets/tools/plugandpaint/app
次に、CMAKE_PREFIX_PATH
変数を、あなたのインストール接頭辞を指すように設定します。すでにCmakeでビルドしている場合は、CMakeCache.txt
ファイルを削除してください。その後、CMakeを再実行してください:
cmake -DCMAKE_PREFIX_PATH=path/to/Qt/6.8.0/your_platform -S <source-dir> -B <build-dir> -G Ninja
あるいは、qt-cmake
という便利なスクリプトを使って、CMAKE_PREFIX_PATH
変数を設定してください。
path/to/Qt/6.8.0/your_platform/bin/qt-cmake -S <source-dir> -B <build-dir> -G Ninja
最後に、ビルドディレクトリに入り、お好みのビルドシステムを実行してください。この例では、Ninja
を使用します。
cd path/to/build/dir ninja
これで、すべてのコンパイルとリンクがエラーなしで完了すれば、plugandpaint.app
バンドルがデプロイできるようになります。Qt や Qt アプリケーションがインストールされていない macOS を実行しているマシンにバンドルをインストールしてみてください。
qmake を使う
まず、アプリケーションを含むディレクトリに移動します:
cd /path/to/Qt/examples/widgets/tools/plugandpaint/app
次に、qmake
を実行してアプリケーション用の新しい makefile を作成し、静的にリンクされた実行ファイルを作成するためにクリーンビルドを行います:
make clean
qmake -config release
make
リリース・ライブラリとリンクしたい場合は、qmake
を起動するときに指定します。デッドコード・ストリッピング」を利用して、バイナリのサイズをさらに小さくしたいと思うかもしれません。この場合、-config release
パラメーターに加えて、LIBS+= -dead_strip
をqmake
に渡します。
繰り返しますが、すべてのコンパイルとリンクがエラーなく完了していれば、plugandpaint.app
バンドルがデプロイできる状態になっているはずです。Qt や Qt アプリケーションがインストールされていない macOS を実行しているマシンにバンドルをインストールしてみてください。
リンクされているライブラリの確認
otool
を使って、アプリケーションがリンクしている他のライブラリを確認することができます:
otool -L plugandpaint.app/Contents/MacOs/plugandpaint
以下は、静的にリンクされたPlug & Paint の出力です:
plugandpaint.app/Contents/MacOS/plugandpaint: /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0) /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 10.0.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.3.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 92.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.0.0)
出力にQtライブラリがある場合、おそらくあなたのマシンには動的と静的の両方の Qt ライブラリがインストールされていることを意味します。リンカは常に静的リンクよりも動的リンクを選択します。静的なライブラリだけを使いたい場合は、以下の方法があります:
- Qt のダイナミックライブラリ (
.dylibs
) を別のディレクトリに移動し、その間にアプリケーションをリンクしてください、 - または、
Makefile
を編集し、Qt ライブラリのリンク行をスタティック・ライブラリの絶対パスに置き換えます。
例えば、次のように置き換えます:
-lQtGui
を次のように置き換えます:
/where/static/qt/lib/is/libQtGui.a
Plug & Paintのサンプルはいくつかのコンポーネントで構成されています:コアアプリケーション(Plug & Paint)、Basic Toolsと Extra Filtersプラグインです。静的リンクのアプローチを使ってプラグインをデプロイすることはできないので、これまでに用意したバンドルは不完全なものです。アプリケーションは実行されますが、プラグインがないため機能は無効になります。プラグインベースのアプリケーションをデプロイするには、macOS特有のフレームワークアプローチを使うべきです。
フレームワーク
このアプローチでは、Qtランタイムがアプリケーションバンドルと一緒に正しく再配布され、プラグインが正しい場所にインストールされ、アプリケーションがそれらを見つけられるようにします。
フレームワークアプローチで Qt をアプリケーションと一緒に配布するには、2 つの方法があります:
- アプリケーションバンドル内のプライベートフレームワーク。
- アプリケーションバンドル内のプライベートフレームワーク。
最初の方法は、Qt を特別な方法でビルドした場合や、フレームワークがあることを確認したい場合に適しています。Qtフレームワークをどこに置くかだけです。
2つ目の選択肢は、多くのQtアプリケーションを持っていて、複数のバージョンのQtフレームワークを使うのではなく、1つのQtフレームワークを使わせたい場合に適しています。
フレームワークとしてQtをビルドする
Qt をインストールするときのデフォルトである、Qt as frameworks を /path/to/Qt ディレクトリにインストール済みであると仮定します。フレームワークなしで Qt をビルドする方法については、Qt for macOS - Specific Issuesのドキュメントを参照してください。
インストール時に、フレームワークの識別名が設定されます。この名前は、ダイナミックリンカー (dyld
) がアプリケーションのライブラリを見つけるために使用します。
アプリケーションをフレームワークとして Qt にリンクする
フレームワークとして Qt をビルドしたら、Plug & Paintアプリケーションをビルドします。
CMake を使う
Apple プラットフォーム用にビルドするには、cmake_minimum_required()
を 3.21.1 以降に設定する必要があります:
cmake_minimum_required(VERSION 3.21.1)
アプリケーションを含むディレクトリに移動します:
cd /path/to/Qt/examples/widgets/tools/plugandpaint/app
次に、CMAKE_PREFIX_PATH
変数をあなたのインストールプレフィックスに設定します。すでにCmakeでビルドしている場合は、CMakeCache.txt
ファイルを削除してください。その後、CMakeを再実行してください:
cmake -DCMAKE_PREFIX_PATH=path/to/Qt/6.8.0/your_platform -S <source-dir> -B <build-dir> -G Ninja
あるいは、qt-cmake
という便利なスクリプトを使って、CMAKE_PREFIX_PATH
変数を設定してください。
path/to/Qt/6.8.0/your_platform/bin/qt-cmake -S <source-dir> -B <build-dir> -G Ninja
最後に、ビルド・ディレクトリに入り、お好みのビルド・システムを実行してください。この例では、Ninja
を使用します。
cd path/to/build/dir ninja
これで、すべてのコンパイルとリンクがエラーなしで完了すれば、plugandpaint.app
バンドルがデプロイできるようになります。Qt や Qt アプリケーションがインストールされていない macOS を実行しているマシンにバンドルをインストールしてみてください。
qmake を使う
まず、アプリケーションを含むディレクトリに移動します:
cd /path/to/Qt/examples/widgets/tools/plugandpaint/app
qmake
を実行してアプリケーション用の新しい makefile を作成し、クリーンビルドを行って動的にリンクされた実行ファイルを作成します:
make clean
qmake -config release
make
これでコア・アプリケーションがビルドされます。これでコア・アプリケーションがビルドされます:
cd ../plugandpaint/plugins make clean qmake -config release make
Qt GuiなどのQtフレームワークのotool
:
次のような出力が得られます:
QtGui.framework/QtGui: /path/to/Qt/lib/QtGui.framework/Versions/4.0/QtGui (compatibility version 4.0.0, current version 4.0.1) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0) /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 10.0.0) /path/to/Qt/QtCore.framework/Versions/4.0/QtCore (compatibility version 4.0.0, current version 4.0.1) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.3.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 92.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.0.0)
Qtフレームワークの場合、最初の行(つまりpath/to/Qt/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.0.0, current version 4.0.1)
)がフレームワークの識別名になり、ダイナミック・リンカー(dyld
)で使用されます。
しかし、アプリケーションをデプロイするとき、ユーザーが指定した場所にQtフレームワークをインストールしていないかもしれません。そのため、合意した場所にフレームワークを提供するか、バンドルにフレームワークを格納する必要があります。どちらの解決策を選ぶにせよ、フレームワークが自分自身の適切な識別名を返し、アプリケーションがこれらの名前を探すようにしなければなりません。幸運なことに、install_name_tool
コマンドラインツールでこれをコントロールすることができる。
install_name_tool
は-id
と-change
の2つのモードで動作する。-id
モードはライブラリとフレームワーク用で、新しい識別名を指定できます。アプリケーションのパスを変更するには、-change
モードを使います。
Qt フレームワークを Plug & Paint バンドルにコピーして試してみましょう。otool
の出力を見ると、QtCore とQtGui の両方のフレームワークをバンドルにコピーしなければならないことがわかります。ここでは、バンドルをビルドしたディレクトリにいると仮定します。
mkdir plugandpaint.app/Contents/Frameworks cp -R /path/to/Qt/lib/QtCore.framework plugandpaint.app/Contents/Frameworks cp -R /path/to/Qt/lib/QtGui.framework plugandpaint.app/Contents/Frameworks
まず、バンドル内にFrameworks
ディレクトリを作成します。これは macOS のアプリケーション規約に従っています。次に、フレームワークを新しいディレクトリにコピーします。フレームワークにはシンボリックリンクが含まれているので、-R
オプションを使います。
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugandpaint.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui plugandpaint.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui
それから、install_name_tool
を実行して、フレームワークの識別名を設定する。-id
の後の最初の引数は新しい名前で、2番目の引数は名前を変えたいフレームワークである。@executable_path
というテキストは、実行ファイルがどこにあるか探し始めるようにdyld
に指示する特別なdyld
変数である。新しい名前は、これらのフレームワークがFrameworks
ディレクトリ直下のディレクトリにあることを指定します。
install_name_tool -change path/to/Qt/lib/QtCore.framework/Versions/4.0/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugandpaint.app/Contents/MacOs/plugandpaint install_name_tool -change path/to/qt/lib/QtGui.framework/Versions/4.0/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui plugandpaint.app/Contents/MacOs/plugandpaint
これでダイナミック・リンカーは、QtCore とQtGui を探す場所を知ることができます。アプリケーションも、install_name_tool
の-change
モードを使用して、ライブラリがどこにあるかを知っているようにしなければなりません。これは基本的に、先に設定した識別名をフレームワークと一致させるための文字列置換に帰着します。
最後に、QtGui フレームワークはQtCore に依存しているので、QtGui の参照を変更することを忘れないようにしなければならない:
install_name_tool -change path/to/Qt/lib/QtCore.framework/Versions/4.0/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugandpaint.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui
この後、otool
を再度実行し、アプリケーションがライブラリを見つけられることを確認する。
Plug & Paintの例では、プラグインを使うことで面白くなります。プラグインの基本的な使い方は以下の通りです:
- プラグインをバンドルの中に入れる、
install_name_tool
を実行して、プラグインが正しいライブラリを使用しているかチェックする、- そして、アプリケーションがプラグインを探す場所を知っていることを確認することです。
プラグインはバンドルの好きな場所に置くことができますが、Contents/Pluginsの下に置くのがベストです。Plug&Paintプラグインをビルドしたとき、.pro
ファイルのDESTDIR
変数に基づいて、プラグインの.dylib
ファイルはplugandpaint
ディレクトリの下のplugins
サブディレクトリにあります。このディレクトリを正しい場所に移動するだけです。
mv plugins plugandpaint.app/Contents
例えば、Basic Toolsプラグインの.dylib
ファイルに対してotool
を実行すると、次のような情報が得られます。
libpnp_basictools.dylib: libpnp_basictools.dylib (compatibility version 0.0.0, current version 0.0.0) /path/to/Qt/lib/QtGui.framework/Versions/4.0/QtGui (compatibility version 4.0.0, current version 4.0.1) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0) /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 10.0.0) /path/to/Qt/lib/QtCore.framework/Versions/4.0/QtCore (compatibility version 4.0.0, current version 4.0.1) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.3.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 92.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.0.0)
すると、プラグインがビルドされたQtフレームワークにリンクしていることがわかります。プラグインにアプリケーション・バンドルのフレームワークを使わせたいので、アプリケーションと同じように変更します。例えば、Basic Toolsプラグインの場合:
install_name_tool -change /path/to/Qt/lib/QtCore.framework/Versions/4.0/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugandpaint.app/Contents/plugins/libpnp_basictools.dylib install_name_tool -change /path/to/Qt/lib/QtGui.framework/Versions/4.0/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui plugandpaint.app/Contents/plugins/libpnp_basictools.dylib
アプリケーションがプラグインを見つけるように、tools/plugandpaint/mainwindow.cpp
からcdUp() のコードも変更しなければなりません。mainwindow.cpp
ファイルに次のコードを追加します:
#elif defined(Q_OS_MAC) if (pluginsDir.dirName() == "MacOS") { pluginsDir.cdUp(); } #endif
tools/plugandpaint/mainwindow.cpp にコードを追加することで、画像のように Finder でプラグインを表示できるようになります。Qt を拡張するプラグイン、例えば SQL ドライバや画像フォーマットを追加することもできます。プラグインのドキュメントで説明されているディレクトリ構造に従い、QCoreApplication::libraryPaths ()にそれらが含まれていることを確認するだけです。画像フォーマットについては、先に説明した手順で手早くやってみましょう。 Qtの画像フォーマットプラグインをバンドルにコピーします: cp -R /path/to/Qt/plugins/imageformats pluginandpaint.app/Contents/plugins
install_name_tool -change /path/to/Qt/lib/QtGui.framework/Versions/4.0/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui plugandpaint.app/Contents/plugins/imageformats/libqjpeg.dylib install_name_tool -change /path/to/Qt/lib/QtCore.framework/Versions/4.0/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore plugandpaint.app/Contents/plugins/imageformats/libqjpeg.dylib 新しいプラグインを探すために、 QDir dir(QCoreApplication::applicationDirPath()); dir.cdUp(); dir.cd("plugins"); QCoreApplication::setLibraryPaths(QStringList(dir.absolutePath())); まず、このディレクトリにあるプラグインだけを探すようにアプリケーションに指示します。私たちの場合、バンドルと一緒に配布するプラグインだけを探すようにアプリケーションに指示します。もし私たちがより大きなQtインストレーションの一部であれば、代わりにQCoreApplication::addLibraryPath() を使うこともできます。 |
警告 プラグインをデプロイしている間にソースコードに変更を加え、アプリケーションがリビルドされたときにデフォルトの識別名がリセットされます。そのため、install_name_tool
を使用して、アプリケーションをバンドル内の正しい Qt フレームワークにリンクさせるプロセスを繰り返す必要があります。
これで、アプリケーションを別の macOS マシンに移動し、Qt をインストールせずに実行できるようになります。あるいは、バンドルの外にあるフレームワークを別のディレクトリに移動して、アプリケーションがまだ動くかどうかを確認することもできます。
アプリケーションとフレームワークが、Qt ライブラリやプラグインを探す場所について合意していることを確認する必要があります。
アプリケーションパッケージの作成
アプリケーションを静的に、あるいはフレームワークとして Qt にリンクし終わったら、アプリケーションを配布する準備が整いました。詳細については、Apple Developer のウェブサイトを参照してください。
アプリケーションを配布するプロセスにはいくつかの落とし穴がありますが、様々な問題点を知れば、すべての macOS ユーザが楽しめるパッケージを簡単に作成することができます。
アプリケーションの依存関係
Qtプラグイン
すべての Qt GUI アプリケーションには、Qt のQPA(Qt Platform Abstraction)レイヤーを実装するプラグインが必要です。macOS の場合、プラットフォーム・プラグインの名前はlibqcocoa.dylib
です。このファイルは、配布ディレクトリの特定のサブディレクトリ(デフォルトではplatforms
)に配置する必要があります。また、以下に説明するように、Qt がプラグインを見つけるために使用する検索パスを調整することもできます。
アプリケーションは、JPEG 画像フォーマットプラグインや SQL ドライバプラグインなど、1 つ以上の Qt プラグインに依存することもあります。必要な Qt プラグインは、必ずアプリケーションと一緒に配布してください。プラットフォーム・プラグインと同様に、各プラグインは配布ディレクトリの特定のサブディレクトリ(imageformats
やsqldrivers
など)に配置する必要があります。
Qt プラグインの検索パスは、QtCore ライブラリにハードコードされています。デフォルトでは、最初のプラグイン検索パスは/path/to/Qt/plugins
としてハードコードされます。しかし、あらかじめ決められたパスを使うことには、ある欠点があります。例えば、ターゲット・マシンに存在しない可能性があります。そのため、Qtプラグインが確実に見つかるように、様々な選択肢をチェックする必要があります:
-
qt.conf
を使う。これは最も柔軟性があり、推奨される方法です。 - QApplication::addLibraryPath() またはQApplication::setLibraryPaths() を使用する。
- サードパーティのインストールユーティリティを使用して、QtCore ライブラリのハードコードされたパスを変更する。
Qt Plugins の作成方法」では、Qt アプリケーション用のプラグインをビルドし、デプロイする際に注意する必要のある事項の概要を説明しています。
追加ライブラリ
アプリケーションがどのライブラリをリンクしているかは、otool
を使って確認できます。アプリケーションのパスを引数として指定して実行します:
otool -L MyApp.app/Contents/MacOS/MyApp
コンパイラ固有のライブラリをアプリケーションと一緒に再配布する必要はほとんどありません。しかし、Qt は macOS 上でいくつかの方法で設定、ビルド、インストールできるので、アプリケーションをデプロイする方法はいくつかあります。Qt は macOS 上でいくつかの方法で設定、ビルド、インストールすることができます。最後のセクションでは、アプリケーションをデプロイする際に注意しなければならないことをいくつか説明します。
Macデプロイツール
Mac のデプロイツールは QTDIR/bin/macdeployqt にあります。これは、Qt ライブラリをプライベートフレームワークとして含む、デプロイ可能なアプリケーションバンドルを作成するプロセスを自動化するように設計されています。
mac デプロイツールは、以下のルールに従って Qt プラグインもデプロイします(-no-plugins
オプションが使用されている場合を除く):
- プラットフォームプラグインは常にデプロイされます。
- デバッグバージョンのプラグインはデプロイされません。
- デザイナー・プラグインはデプロイされません。
- イメージフォーマットプラグインは常にデプロイされます。ただし、SVG イメージフォーマットプラグインは、アプリケーションがQt SVGモジュールを使用している場合にのみデプロイされます。
- アイコンエンジンプラグインは常にデプロイされます。
- 印刷サポートプラグインは常にデプロイされます。
- SQL ドライバプラグインは、アプリケーションがQt SQLモジュールを使用している場合にデプロイされます。
- アクセシビリティ プラグインは常にデプロイされます。
- スタイル プラグインは常にデプロイされます。
重要: Mac Deployment Tool を使用しない場合は、配置パッケージにこれらのプラグインが含まれていることを確認する必要があります。
サードパーティ ライブラリをアプリケーション バンドルに含めるには、バンドルが作成された後で、ライブラリを手動でバンドルにコピーします。
macdeployqt
は次のオプションをサポートしています:
オプション | 説明 |
---|---|
-verbose=<0-3> | 0 = 出力なし、1 = エラー/警告(デフォルト)、2 = 通常、3 = デバッグ |
-no-plugins | プラグインのデプロイをスキップする |
-dmg | .dmgディスクイメージを作成する |
-no-strip | バイナリに対して'strip'を実行しない |
-use-debug-libs | フレームワークとプラグインのデバッグバージョンでデプロイする (-no-strip を意味する) |
-executable=<path> | 与えられた実行ファイルに、デプロイされたフレームワークも使わせる |
-qmldir=<path> | 与えられたパスにある.qmlファイルで使われるインポートをデプロイする |
-qmlimport=<path> | 指定されたパスをQMLインポートの検索場所に追加する |
-always-overwrite | 対象となるファイルが存在してもファイルをコピーする |
-codesign=<ident> | 全ての実行ファイルに対して、指定されたIDでcodesign 。 |
-hardened-runtime | コード署名時にHardened Runtimeを有効にする |
-timestamp | コード署名時に安全なタイムスタンプを含める(インターネット接続が必要) |
-sign-for-notarization=<ident> | 公証に必要なオプションを有効にする(インターネット接続が必要)。有効化されたオプションは、-hardened-runtime 、-timestamp 、です。-codesign=<ident> |
-appstore-compliant | プライベート API を使用するコンポーネントのデプロイメントをスキップする |
-libpath=<path> | 指定されたパスをライブラリ検索パスに追加します。 |
-fs=<filesystem> | .dmgディスクイメージに使用するファイルシステムを設定する(デフォルトはHFS+)。 |
注意: macOS High Sierra では、新しい Apple File System (APFS) が導入されました。古いバージョンの macOS では、APFS でフォーマットされた .dmg ファイルを読み取ることができません。デフォルトでは、macdeployqt
は、現在 Qt がサポートしている macOS のすべてのバージョンとの互換性のために、古い HFS+ ファイルシステムを使用します。異なるファイルシステムを指定するには、-fs
オプションを使用してください。
ボリューム名
-dmg
で作成されたディスクイメージのボリューム名(開いている.dmg
ファイルのウィンドウタイトルに表示されるテキスト)は、macdeployqt
を実行したときのアプリケーションへのパスに基づいています。例えば、Qt Quick アプリケーションのディスク・イメージを作成する次のコマンドを考えてみましょう:
macdeployqt /Users/foo/myapp-build/MyApp.app -qmldir=/Users/foo/myapp/qml -dmg
結果のボリューム名は次のようになります:
/Users/foo/myapp-build/MyApp.app
ボリューム名にアプリケーション名のみが含まれ、配置マシン上のパスが含まれないようにするには、同じディレクトリでmacdeployqt
を実行します:
cd /Users/foo/myapp-build macdeployqt MyApp.app -qmldir=/Users/foo/myapp/qml -dmg
その結果、ボリューム名は次のようになります:
MyApp.app
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。