web-dev-qa-db-ja.com

Linuxシステム上のqtでWindows実行可能ファイルを構築する

Linuxで.proファイルをコンパイルして、Windowsを実行可能にしようとするのに苦労しました。私はmingwの使用に関する世界のすべてのリンクを読みましたが、まだ何も機能していません。私が見逃しているものがありますか、またはこれを行う方法について誰かが本当に良いステップを持っていますか?

Ubuntu 14.04.2 QT 4.8

6
Sagebrushwilly

QT4の場合

次の手順は、 スタックオーバーフロー に関する投稿の回答から取られたものです。qt4を使用してビルドする場合、機能する場合は必ず投票してください。

Mクロス環境(MXE) を使用するだけです。プロセス全体の痛みを取り除きます。

  1. それを得る:

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

  3. Qt for Windows、その依存関係、およびクロスビルドツールをビルドします。適切なインターネットアクセスが可能な高速マシンでは、これには約1時間かかります。ダウンロードは約500MBです。

    cd mxe && make qt
    
  4. アプリのディレクトリに移動し、クロスビルドツールをPATH環境変数に追加します。

    export PATH=<mxe root>/usr/bin:$PATH
    

    Qt Makefileジェネレーターツールを実行してからビルドします。

    <mxe root>/usr/i686-pc-mingw32/qt/bin/qmake && make
    
  5. バイナリは./releaseディレクトリにあります。

    wine release/foo.exe
    

いくつかのメモ:

MXEリポジトリのmasterブランチを使用してください。開発チームからより多くの愛を得るようです。

出力は32ビットの静的バイナリであり、64ビットWindowsで適切に機能します。

QT5の場合

次の手順は、 スタックオーバーフロー の投稿に対する回答から取得されます。qt5を使用してビルドする場合、それが機能する場合は必ず投票してください。

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

  1. それを得る:

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

  3. Windows向けQt 5のビルド:

    cd mxe && make qtbase
    

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

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

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

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

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

    make
    
  6. バイナリは./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です。

8
Mark Kirby