Barra laterale

programmazione:qt:crosscompilare_progetto_qt_per_windows_su_linux

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;

programmazione/qt/crosscompilare_progetto_qt_per_windows_su_linux.txt · Ultima modifica: 18/04/2018 - 15:48 (modifica esterna)