−Indice
Crosscompilare progetto QT per windows su di una linuxbox
Autore: Fabio Di Matteo
Ultima revisione: 8/05/2014
In questo articolo realizzeremo un “hello world” in qt e C++ e poi lo compileremo sia per Linux che per Windows. Il tutto,ovviamente, sulla nostra Linuxbox.Per quanto riguarda il codice dell'esempio (banale) ci rifacciamo al tutorial ufficiale qt in italiano.
Il codice
main.cpp
#include <QApplication> #include <QtGui> int main(int argv, char **args) { QApplication app(argv, args); //Gli oggetti della mia GUI QTextEdit textEdit; textEdit.setText("Ciao mondo!"); QPushButton quitButton("Quit"); //Il layout che conterra' gli oggetti QVBoxLayout layout; layout.addWidget(&textEdit); layout.addWidget(&quitButton); //La finestra che conterra' il layout QWidget window; window.setLayout(&layout); window.show(); //Callback per l'uscita dall'applicazione dopo il click sul pulsante QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit())); return app.exec(); }
Compiliamo il nostro progetto su Linux
Cominciamo con il dire che il contenuto della cartella deve comprendere solamente i file sorgenti in cpp e nessun altro residuo di altre compilazioni precedenti, magari per altre piattaforme.Quindi nel nostro caso la cartella conterra solamente il file main.cpp
.
Per la compilazione su linux basta installare i pacchetti di sviluppo delle Qt qualora non sia disponibile il pacchetto all in one per la nostra distribuzione. Ecco i passi necessari per la compilazione con Qt4.8:
qmake-qt4 -project qmake-qt4 make
Dove:
- qmake-qt4 -project (genera il file di configurazione per il progetto QT-hello-world.pro);
- qmake-qt4 (genera il Makefile);
- make compila il progetto;
Crosscompiliamo il nostro progetto per Windows su Linux
Crosscompileremo staticamente il nostro progetto grazie all'ambiente di crosscompilazione MXE . MXE (M cross environment) is a Makefile that compiles a cross compiler and cross compiles many free libraries such as SDL and Qt. Thus, it provides a nice cross compiling environment for various target platforms.
Assicuriamoci che il contenuto della cartella comprenda solamente i file sorgenti in cpp e nessun altro residuo di altre compilazioni precedenti, magari per altre piattaforme.Quindi nel nostro caso la cartella conterra solamente il file main.cpp
. Fatto cio' installiamo MXE come mostrato in questa guida.
Procediamo allo scaricamento e installazione delle Qt tramite mxe
Adesso siamo pronti per preparare il nostro sistema mxe per scaricare e compilare Qt
Dalla root di mxe lanciamo
make qt
Mxe scarichera' e compilera' Qt e tutte le sue dipendenze. Il processo è molto lungo e su macchine lente puo' durare molto. (su un Pentium 4 con 2GB di ram è durato quasi 12 ore).
Fatto cio' possiamo mettere in $PATH l'installazione di MXE in modo da richiamare gli eseguibili piu' comodamente. Quindi aggiungiamo al nostro .bashrc
la seguente riga:
export PATH=/Percorso dove è installato MXE/usr/bin:$PATH
A questo punto siam gia' pronti per crosscompilare i nostri progetti. Portiamoci nella cartella che contiene il nostro file main.cpp e diamo i seguenti comandi:
i686-pc-mingw32-qmake -project i686-pc-mingw32-qmake make
Dove:
- i686-pc-mingw32-qmake -project (genera il file di configurazione per il progetto QT-hello-world.pro);
- i686-pc-mingw32-qmake (genera il Makefile);
- make compila il progetto;