Costruire Qt 5 su Linux, per Windows

Volevo migrare la mia app Qt 4 per usare invece Qt 5. Queste istruzioni non sono riuscite, a causa di alcune differenze con il modo in cui MXE crea Qt 5, incluso il fatto che utilizza tarball Qt modularizzati, invece di un grande tarball.

Ecco le istruzioni complete:

  • Prendilo:

    git clone https://github.com/mxe/mxe.git 
  • Installa le dipendenze di compilazione

  • Costruisci Qt 5 per Windows:

     cd mxe && make qtbase 

    Questo prima costruirà le sue dipendenze e gli strumenti di cross-build; Dovrebbe impiegare meno di un’ora su una macchina veloce con un discreto accesso a internet.

    A causa della nuova natura modulare di Qt 5, vari importanti componenti Qt sono ora in diversi tarball. Quello selezionato sopra, qtbase , dovrebbe darti abbastanza funzionalità per eseguire le normali app della GUI, che è tutto ciò di cui avevo bisogno per la mia app (piccola).

    Se invece vuoi build tutto Qt 5, devi eseguire make qt5 (invece di make qtbase ). Nota che ci vorrà molto più tempo per completare, quindi assicurati di aver bisogno delle funzionalità extra.

  • Accedi alla directory della tua app ed esegui lo strumento generatore Qt Makefile:

     /usr/bin/i686-w64-mingw32.static-qmake-qt5 
  • Costruisci il tuo progetto:

     make 
  • Dovresti trovare il file binario nella directory ./release:

     wine release/foo.exe 

Alcune note:

  • Questo è stato testato su Debian 8 a 64 bit e ovviamente su Windows.

  • L’output è un eseguibile statico a 32 bit, che funzionerà bene su Windows a 64 bit.

  • Se vuoi un eseguibile a 64 bit, crea Qt con:

     make MXE_TARGETS=x86_64-w64-mingw32.static qtbase 

    Il valore MXE_TARGETS predefinito è i686-w64-mingw32.static .

Il comando git checkout non è corretto. Ora devi ottenere il loro ramo stabile o fallirà la costruzione.

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

dovrebbe essere…

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

Questo da solo ha risolto tutti i miei problemi con la costruzione di qtbase ma non ho lasciato nessuna cartella qt quando ho finito. Quindi l’objective qt5 fallirebbe con errori oscuri. Cartella eliminata, verificata stabile e funzionava perfettamente.