web-dev-qa-db-ja.com

Windowsで64ビットMinGW Qtアプリケーションを構築する方法(Qt Creatorを使用)

私はWindows上でMinGWベースの64ビットQtプログラムを構築するための最も簡単な方法を探しています(そして、私だけではないことを確認しています)。簡単なことは、最小限の労力と時間を意味します(例えば、構築とセットアップのため)。現在、MinGW/OpenGLとQtCreatorを使用して、Windows 32ビット用のqt-project.org Webサイトの通常の公式開発環境を実行しています。もちろん、qt-project.orgの(未完成の...)64ビットwikiページを読んでおり、さまざまなstackoverflowの質問も読んでいますが、それでも混乱しています。 64ビットQtの構築方法のトピックは他の投稿で扱われていることは知っていますが、これは私の質問ではなく、概要と最も有利な64ビットMinGWポートです。

たとえば、私を混乱させたのは、mingwbuilds sourceforgeプロジェクトの「x64-Qt-5.2.1 + QTCreator-3.0.1-(gcc-4.8.2-seh).7z」パッケージのDLLが32ビットのように見えることです。 。

私の質問を少し明確にするために、関連する質問もいくつか聞かせてください。

  • 64ビット実行可能ファイルを生成するために、最初に64ビット開発環境を構築する必要がありますか、それとも通常のデフォルト環境を維持し、MinGWツールチェーンを64ビットツールチェーンとのみ交換できますか?
  • 展開用の64ビットQtライブラリはどこで入手できますか、それとも自分でビルドする必要がありますか?または、64ビットライブラリを含む64ビット開発環境はどこで入手できますか?
  • 自分でビルドする必要がある場合、どのMinGW 64ビットポートが最も有利ですか?

ご協力ありがとうございました。

20
Chris

2019年3月11日更新:Qt 5.12以降、Qtプロジェクトは64ビットモードのMinGW-w64を公式にサポートしています。 Qtインストーラーからインストールするか、Qtのソースから自分でビルドすることができます(ビルドの成功を妨げる問題を解決しました)。

Prior update:rubenvb's answer がこの質問に対するベストアンサーになったと思います:MSYS2には最新のものが含まれていますMinGW-w64で構築されたQtは、64ビットQtアプリを構築するために必要なものです。 rubenvbのデプロイのQt wikiリンクを使用することをお勧めします。大幅に改善されました。

Qt64-NG

Qt64-NGプロジェクト からQtビルドをインストールすることをお勧めします。

このプロジェクトは、MinGW-w64を使用した最新のx64 Qtビルドを提供します。 MinGW-w64プロジェクトのGCCコンパイラもインストーラーバージョンに含まれています(7zには含まれていません)。独自のアプリを構築するためのQtの構築に使用したMinGW-w64のGCCと同じバージョンが必要になるため、インストーラーを選択することをお勧めします。

必要な例外スタックフレームの巻き戻し方法でビルドを選択する必要があります。質問 sjljとdwarfとsehの違いは何ですか? は、Qtの異なるビルドに存在する例外ハンドラーのタイプの違いを説明しています。 SJLJはGCC 4.8がリリースされる前の唯一の選択肢でしたが、後のGCCバージョンではSEHがサポートされています。 SEHの方が効率的ですが、どちらの選択でも機能します。

ポストインストール

Qtをインストールしたら、Qt/qt-ver/qt-ver/binおよびQt/qt-ver/mingw64/binディレクトリを環境変数のUserまたはSystem Path変数に追加できます。これにより、MinGWを使用できます-w64のGCCは、好みのビルドプロセスからビルドします。これを実行すると、Qt CreatorはMinGW-w64をインストール済みコンパイラとして自動検出します。

パスに追加したくない場合は、Qt Creatorでセットアップしたバージョンのコンパイラーを手動で指定できます。 [オプション]> [ビルドと実行]でqmake.exeを選択して、Qtバージョンを追加する必要があります。また、[ビルドと実行]> [デバッガ]タブで、デバッガとしてgdb.exeを選択することもできます。 Qt/qt-ver/qt-ver/mingw64/binにあります。

MinGW-w64ツールチェーンを他のツールチェーンと交換できます。 Qt Creatorでこれを行うには、キットを作成して交換できます。

展開

Qt64-NGビルドを開発と展開に使用できます。デプロイするには、アプリケーションをアプリケーションとともに実行するために必要なファイルをパッケージ化します。これにより、エンドユーザーは追加のインストール手順を実行する必要がなくなります。

最初に、(おそらくアプリケーション名で)展開フォルダーを作成し、アプリケーション実行ファイルをそこにコピーします。 Qt Creatorを使用している場合、サイドバーの[プロジェクト]タブまたはアプリケーションの.proファイル(指定されている場合)のいずれかで、アプリケーションexeへのパスを見つけることができます。

アプリケーションを実行するために必要なDLL依存関係をコピーする方法は2つあります。必要なファイルを手動でコピーするか、windeployqtを使用できます。windeployqtは、作成したアプリケーションデプロイフォルダーにデプロイに必要な(ほとんどの)依存関係を自動的にコピーするQtインストールで提供されるプログラムです。

ファイルを手動でコピーする

次のdllファイルをQt/qt-ver/qt-ver/binおよびQt/qt-ver/mingw64/binフォルダーからアプリケーションデプロイフォルダーにコピーします。一部のdllファイルは両方のフォルダーに配置され、どちらの場所でも使用できます。

icudt54.dll
icuin54.dll
icuuc54.dll
libgcc_s_sjlj.dll or libgcc_s_seh.dll (corresponds with chosen stack unwinding method)
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

また、プロジェクトで使用しているQtモジュールに対応するQt5 * .dllファイルを含める必要があります。

次に、Qtが必要とするプラグインdllファイルをコピーする必要があります。 Qtは、デフォルトでアプリケーションのdeploy folder/pluginsでプラグインを探します。 Qt/qt-ver/qt-ver/pluginsでコピーするプラグインフォルダーを見つけることができます。これの例外は、プラットフォームフォルダーであり、アプリケーションデプロイディレクトリ/プラットフォームで検索しようとします。次のディレクトリ構造は、最小プロジェクトのファイルのコピー先を示しています。含まれているフォルダーを含む他の必要なプラグインを、deployment/pluginsフォルダーにコピーします。

/ deploy

/platforms
/plugins
icudt54.dll
icuin54.dll
icuuc54.dll
app.exe
libgcc_s_seh-1.dll
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

/ deploy/platforms

qwindows.dll

/ deploy/plugins/imageformats

qjpeg.dll

Windeployqt

Windeployqt.exeはQt/qt-ver/qt-ver/binフォルダーにあります。 Windeployqtを正しく動作させるには、Qt/qt-ver/qt-ver/binおよびmingw64/binフォルダーがユーザーまたはシステムパス変数にある必要があります。

Windeployqtを使用するには、コマンドウィンドウを開き、アプリケーションのdeployディレクトリに移動します。それを実行するための構文は Qt Deployment にあります。おそらく次のように実行する必要があります。

windeployqt.exe app.exe

Windeployqt(Qt 5.4.1)は、プラグインフォルダー内ではなく、imageformatsおよびiconenginesプラグインフォルダーをアプリケーションデプロイディレクトリレベルにコピーします。これは、Qtがこれらのフォルダーを探す場所を変更するため、正しい場所です。

トラブルシューティング

Qt開発ライブラリがインストールされておらず、パスにないコンピューターでアプリケーションを実行することで、正しいファイルがあるかどうかをテストできます。アプリケーションの起動時にエラーが発生しなければ、Qtが必要な依存関係を見つけたことがわかり、アプリケーションを配布用にパッケージ化できます。

エラーが発生する場合は、 トリプルブート展開ガイド を参照してください。 Process Explorer を使用して、依存関係のないエラーが発生したときにアプリケーションがロードしようとする依存関係を確認することもできます。

パッケージング

多くの場合、アプリケーションはアーカイブやインストーラーとともに配布されます。 Qt Installer Framework は、インストーラー実行可能ファイルとして配布するためにQtアプリケーションをパッケージ化する便利な方法を提供します。

21
Andrew Dolby

MSYS2をインストールできます。これには、パッケージマネージャーと、Qtを含むパッケージのロードのビルド済みバージョンが含まれます。 Qt Creator(ちなみにリポジトリにもあります)。

インストールは簡単です:

  1. Webページ からインストーラーをダウンロードします。
  2. MSYS2コマンドプロンプトを開き、Qtをインストールします。

    pacman -Sy mingw-w64- {i686、x86_64} -qt5

  3. Qtのqmakeは<msys2>/mingw{64,32}/binにインストールされ、それぞれのコマンドプロンプトからアクセスできます。

同様に、開発に必要な他の何百ものライブラリとツールをインストールできます。

アプリケーションの展開の残りについては、 Windows展開に関するQtプロジェクトwikiページ を参照します。

15
rubenvb