web-dev-qa-db-ja.com

LinuxでのQt 5のビルド、Windows用

Qt 4アプリを移行して、代わりにQt 5を使用したかったのです。 これらの指示 失敗、 [〜#〜] mxe [〜#〜] はQt 5をビルドする方法の違いにより、代わりにモジュール化されたQt tarballを使用するという事実を含む1つの大きなtarballの。

53
Tshepang

完全な手順は次のとおりです。

  • それを得る:

    git clone https://github.com/mxe/mxe.git
    
  • インストール ビルドの依存関係

  • Windows用Qt 5をビルドします。

    cd mxe && make qtbase
    

    これにより、最初に依存関係とクロスビルドツールがビルドされます。適切なインターネットアクセスが可能な高速マシンでは、1時間未満で完了します。

    Qt 5の新しいモジュール性により、さまざまな主要Qtコンポーネントが異なるtarballに含まれるようになりました。上記で選択したqtbaseは、通常のGUIアプリを実行するのに十分な機能を提供します。これは、自分の(小さな)アプリに必要なすべてです。

    代わりにQt 5をすべてビルドする場合は、make qt5の代わりにmake qtbaseを実行する必要があります。完了するまでにかなり時間がかかることに注意してください。追加の機能が必要になることを確認してください。

  • アプリのディレクトリに移動し、Qt Makefileジェネレーターツールを実行します。

    <mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
    
  • プロジェクトをビルドします。

    make
    
  • バイナリは./releaseディレクトリにあります。

    wine release/foo.exe
    

いくつかのメモ:

  • これは私の64ビットDebian 8、そしてもちろんWindowsでテストされました。

  • 出力は32ビットの静的実行可能ファイルであり、64ビットWindowsで正常に機能します。

  • 64ビットの実行可能ファイルが必要な場合は、次を使用してQtをビルドします。

    make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
    

    デフォルトのMXE_TARGETS値はi686-w64-mingw32.staticです。

93
Tshepang

Git checkoutコマンドが正しくありません。安定したブランチを取得する必要があります。そうしないと、ビルドに失敗します。

git clone https://github.com/mxe/mxe.git

あるべき...

git clone -b stable https://github.com/mxe/mxe.git

それだけで、qtbaseのビルドに関するすべての問題が修正されましたが、完了したらqtフォルダーは残されません。その後、qt5ターゲットは不明瞭なエラーで失敗します。フォルダーを削除し、安定版をチェックアウトし、問題なく動作しました。

7
AcidTonic

あなたがこれをしようとすると、私にとってはうまくいきます!

su
mv mxe /opt/mxe
cd /opt/mxe && make