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_stripqmake に渡します。

繰り返しますが、すべてのコンパイルとリンクがエラーなく完了していれば、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

otool -L QtGui.framework/QtGui

次のような出力が得られます:

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 の出力を見ると、QtCoreQtGui の両方のフレームワークをバンドルにコピーしなければならないことがわかります。ここでは、バンドルをビルドしたディレクトリにいると仮定します。

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

これでダイナミック・リンカーは、QtCoreQtGui を探す場所を知ることができます。アプリケーションも、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 を使って、バンドル内のフレームワークにプラグインをリンクします:

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

新しいプラグインを探すために、tools/plugandpaint/main.cpp のソースコードを更新する。QApplication を構築した後、以下のコードを追加する:

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 プラグインは、必ずアプリケーションと一緒に配布してください。プラットフォーム・プラグインと同様に、各プラグインは配布ディレクトリの特定のサブディレクトリ(imageformatssqldrivers など)に配置する必要があります。

Qt プラグインの検索パスは、QtCore ライブラリにハードコードされています。デフォルトでは、最初のプラグイン検索パスは/path/to/Qt/plugins としてハードコードされます。しかし、あらかじめ決められたパスを使うことには、ある欠点があります。例えば、ターゲット・マシンに存在しない可能性があります。そのため、Qtプラグインが確実に見つかるように、様々な選択肢をチェックする必要があります:

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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。