QT アプリを展開する最良の方法は何ですか? trolltech でホストされているドキュメントを読みましたが、静的ライブラリまたは動的ライブラリとリンクして、ユーザーにフレームワークをインストールしてもらう方が良いですか? シンプルな GUI フロントエンドを実行するためだけに、私のアプリを使用する人が 160 MB のフレームワークをダウンロードする必要はありません。
3 に答える
macdeployqt
OS X では、4.5 以降の Qt に付属するツールを使用して、動的ビルドを実行し、結果の ".app" を後処理することをお勧めします。
これにより、アプリケーションで使用される Qt フレームワークがアプリケーション バンドルにコピーされるため、アプリケーションの静的バージョンをビルドするよりもパッケージが大きくなります。
動的ビルドで可能な限り最小のファイル サイズを取得するためにできることは次のとおりです。
- まず、必要なものだけを含めるようにしてください (project.pro ファイルの
QT += core gui network xml
行に)。 - アプリケーション バンドルを開き、不要な「Qt プラグイン」をバンドルから削除します。そこにあるすべての Qt プラグインを
macdeployqt
自動的にコンパイルします。 - アプリケーションをリリースモードでビルドしていることを確認してください。そうしないと、アプリケーションがQt4 フレームワークのデバッグ ライブラリにリンクされている可能性があり、それらは非常に大きくなります (たとえば、デバッグ ライブラリの場合は 90 MB をはるかに超えますが、デバッグ シンボルのないリリース バリアントの場合は 16 MB になります)。これはあなたの場合に起こったことかもしれません。
- 大きなアプリケーション バイナリがある場合は、UPXを使用して実行可能ファイルを 40 ~ 50% 圧縮できます。
それ以外では、圧縮されたディスク イメージを使用してアプリケーションをデプロイする必要があります。
私のプロジェクトの 1 つはQtGui、QtNetwork、QtCore、およびQtXmlを使用しており、結果のバンドルのサイズは約 16 MB です。
それが役立つことを願っています。
残念ながら、ユーザーが Mac に Qt をインストールすることは期待できないため、必要な Qt ライブラリを独自のバンドルに含める必要があります (Linux パッケージ システムでは、少なくとも特定のバージョンの Qt.
macdeployqt と呼ばれる便利なツールがあります。バンドル アプリケーションで呼び出すだけで、必要なライブラリがパックされ、バイナリのリンクがそれらを参照するように変更されます。それがなければ、Mac 用のバンドルを作成するのは非常に困難です (それでも問題はありますが、かなり軽減されます)。
http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool
その後、他のアプリと同じように .dmg イメージを作成できます。基本的なものを構築する macdeployqt のオプションがあります。
Linux では、OS の Qt のコピーがほぼ確実にインストールされているため、OS の Qt のコピーに依存することをお勧めします。OS X では、ほとんどすべてのアプリが静的にコンパイルされたライブラリを使用します。