Note : J'ai effectué cette installation sur une Ubuntu Dapper Drake, il y a des chances que cela fonctionne sur une Debian unstable, mais je n'en sais strictement rien. ( besoin des paquets QT4 4.1.2). N'ayant jamais travaillé avec autre chose qu'une debian ou ubuntu, vous êtes livré a vous même si vous êtes dans ce cas !!! (voir références en bas du howto)
Je suis actuellement sur un projet C++/QT4 (scolaire), avec binaires windows à rendre. Seul problème, je n'ai plus un seul windows d'installé, que cela soit chez moi, ou sur l'ordinateur que j'utilise en cours !!!
J'ai donc mis en place un environnement de cross-compilation pour produire des binaires windows utilisant QT4, j'ai assez galéré, donc autant en faire profiter le plus grand nombre.
INSTALLATION DE L'ENVIRONNEMENT DE BASE
amalsek@amalsek-desktop:~$ sudo wine mingw32 mingw32-binutils mingw32-runtime
La vous avez déjà un environnement de cross-compilation simple
On va essayer :
essai.cpp
1 2 3 4 5 6 7 8 9 10
| #include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL,
"Cette fenêtre prouve que le cross-compilateur est fonctionnel !",
"Hello World", MB_OK);
return 0;
} |
amalsek@amalsek-desktop:~$ i586-mingw32msvc-g++ -o essai.exe essai.cpp
Normalement ça compile...
Il faut ensuite récuperer la dll de mingw (et la mettre dans le meme repertoire que l'exe ou ~/.wine/drive_c/windows/system )
amalsek@amalsek-desktop:~$ gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll
Puis on teste la fenetre
amalsek@amalsek-desktop:~$ wine essai.exe
Normalement tout est bon et la fenêtre apparait
Maintenant on va commencer le plus difficile, la mise en place de QT4
AJOUT DES BIBLIOTHEQUES QT4
On récupère les binaires et les paquets de développement QT4 d'ubuntu
amalsek@amalsek-desktop:~$ sudo apt-get install libqt4-core libqt4-gui libqt4-qt3support libqt4-sql libqt4-debug-dev libqt4-dev
On récupère également les binaires win32 sur le site de Trolltech
( /!\ 45Mo /!\ )
amalsek@amalsek-desktop:~$ wget http://wftp.tu-chemnitz.de/pub/Qt/qt/source/qt-win-opensource-4.1.2-mingw.exe
Puis on les extrait de l'executable grace a wine
amalsek@amalsek-desktop:~$ wine qt-win-opensource-4.1.2-mingw.exe
Notes: pas besoin de telecharger MinGW durant l'install.
ne pas oublier d'enregistrer les dll dans le registre de wine. (l'installeur vous le demande)
On copie les binaires windows dans un dossier
1 2
| amalsek@amalsek-desktop:~$ sudo cp -Rf ~/.wine/drive_c/Qt/4.1.2 /usr/local/
amalsek@amalsek-desktop:~$ sudo mv /usr/local/Qt /usr/local/qt4-win32 |
Maintenant on va toucher a la configuration de qmake - on va en créer une nouvelle (a partir de celle de windows)
1 2
| amalsek@amalsek-desktop:~$ sudo cp -Rf /usr/share/qt4/mkspecs/win32-g++ /usr/share/qt4/mkspecs/win32-x-g++
amalsek@amalsek-desktop:~$ sudo nano /usr/share/qt4/mkspecs/win32-x-g++/qmake.conf |
Les lignes a modifier sont les suivantes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| QMAKE_CXX = i586-mingw32msvc-g++
QMAKE_INCDIR = /usr/i586-mingw32msvc/include/
QMAKE_INCDIR_QT = /usr/local/qt4-w32/4.1.2/include
QMAKE_LIBDIR_QT = /usr/local/qt4-w32/4.1.2/lib
QMAKE_LINK = i586-mingw32msvc-g++
# ne pas oublier le -mwindows ici
QMAKE_LFLAGS = -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mwindows
#isEqual(MINGW_IN_SHELL, 1) {
QMAKE_DIR_SEP = /
QMAKE_COPY = cp
QMAKE_COPY_DIR = cp -r
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm -f
QMAKE_MKDIR = mkdir -p
QMAKE_DEL_DIR = rm -rf
#} else {
# QMAKE_COPY = cp
# QMAKE_COPY_DIR = cp -r
# QMAKE_MOVE = mv
# QMAKE_DEL_FILE = rm -f
# QMAKE_MKDIR = mkdir -p
# QMAKE_DEL_DIR = rm -rf
#}
# Enlever les .exe et rajouter -qt4
QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc-qt4
QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic-qt4
# Je n'ai pas trouvé d'équivalent de ce fichier, j'ai quand meme enlevé le .exe
QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc
QMAKE_RC = i586-mingw32msvc-windres
QMAKE_STRIP = i586-mingw32msvc-strip |
A partir de la, normalement l'environnement est configuré. Pour compiler votre projet QT4, allez dans la racine de celui-ci et faites :
1 2 3
| amalsek@amalsek-desktop:~$ qmake-qt4 -project
amalsek@amalsek-desktop:~$ qmake-qt4 -spec win32-x-g++
amalsek@amalsek-desktop:~$ make |
Note: Si la compilation échoue car il manque des fichier du type "libQtGui_Debug", il est possible qu'il y ait besoin de rajouter la ligne "CONFIG -= debug" dans le fichier .pro généré par qmake-qt4 -project
L'exécutable se trouve placé dans le répertoire release/ . Vous pouvez maintenant le lancer grace a la commande wine monprojet.exe !!!
Si vous avez des commentaires ou des améliorations, n'hésitez pas !!!
Mes sources :
http://silmor.de/29
http://www.dumbbell.fr/howto/win32-c...lation.fr.html
Partager