IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

[HowTo] Cross-compilation C++/Qt4 : Linux - > Windows


Sujet :

Qt

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut [HowTo] Cross-compilation C++/Qt4 : Linux - > Windows
    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

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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;
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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 )
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    amalsek@amalsek-desktop:~$ gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll
    Puis on teste la fenetre

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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 /!\ )
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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 :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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 :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Si tu peux �toffer un peu, mettre quelques screenshots, on peut en faire un article et le publier.

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Par d�faut
    Citation Envoy� par Aurelien.Regat-Barrel
    Si tu peux �toffer un peu, mettre quelques screenshots, on peut en faire un article et le publier.
    Ok, je vais voir ce que je peux faire, (essentiellemet le fonctionnement sur d'autres distros, essayer d'utiliser CMake - �a ca serai pas mal - au lieu de qmake,etc ..), mais je ne peux rien promettre, je suis d�j� pas mal occup� ...

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Non non, garde ce que tu as fait. Mais explique un peu plus (introduction, liens vers les sites concern�s, ...), donne quelques screenshots et transforme un peu pour faire + article et - post de forum.
    C'est un tuto Qt, donc qmake c'est tr�s bien. Pour les autres plateformes, si tu as le temps pour quoi pas. Mais je te parle juste de remodeler ce que tu as d�j� fait. Car l� ton post va partir dans l'oubli d'ici 1 semaine. Si on le publie, il va �tre annonc�, etc...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 21
    Par d�faut
    J ai suivi toute la procedure et rajouter les librairies au projet petit a petit , mais le lQtGui et lQtCore posent probleme... C'est vraiment l ultime Make qui foire un peu

    Une idee? merci
    -L"~/.wine/drive_c/Development/Qt/4.2.3/lib" -lQtGui -lQtCore
    /usr/lib/gcc/i586-mingw32msvc/3.4.5/../../../../i586-mingw32msvc/bin/ld: cannot find -lQtGui



    QtCore et QtGui se trouve dans usr/include/qt4/Qt
    /.wine/drive_c/Development/Qt/4.2.3/lib ici se trouve Qtcore.prl et QtGui.prl

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par d�faut
    Bonjour,

    J'ai un probl�me � partir de l� :
    amalsek@amalsek-desktop:~$ wine qt-win-opensource-4.1.2-mingw.exe
    O� est-ce que je dois installer le programme et quel dossier je dois mettre pour mingw ?

    Merci pour le tuto.

  7. #7
    Membre averti
    Inscrit en
    D�cembre 2008
    Messages
    16
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2008
    Messages : 16
    Par d�faut
    tout marche bien pour le tuto jusqu'au make qui marche pas du tout et me retourne ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    jad@jad-laptop:~/testCrossCompilation$ make
    make -f Makefile.Release
    make[1]: entrant dans le répertoire « /home/jad/testCrossCompilation »
    i586-mingw32msvc-g++ -c -O2 -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I"/usr/local/qt4-win32/include/QtCore" -I"/usr/local/qt4-win32/include/QtGui" -I"/usr/local/qt4-win32/include" -I"." -I"src" -I"build" -I"build" -I"/usr/i586-mingw32msvc/include" -I"/usr/share/qt4/mkspecs/win32-crossCompil-g++" -o build/Form.o src/Form.cpp
    In file included from src/Form.h:4,
                     from src/Form.cpp:1:
    build/ui_Form.h:13:27: error: QtCore/QVariant: Aucun fichier ou dossier de ce type
    build/ui_Form.h:14:25: error: QtGui/QAction: Aucun fichier ou dossier de ce type
    build/ui_Form.h:15:30: error: QtGui/QApplication: Aucun fichier ou dossier de ce type
    build/ui_Form.h:16:30: error: QtGui/QButtonGroup: Aucun fichier ou dossier de ce type
    build/ui_Form.h:17:24: error: QtGui/QLabel: Aucun fichier ou dossier de ce type
    build/ui_Form.h:18:29: error: QtGui/QPushButton: Aucun fichier ou dossier de ce type
    build/ui_Form.h:19:25: error: QtGui/QWidget: Aucun fichier ou dossier de ce type
    In file included from src/Form.cpp:1:
    src/Form.h:5:20: error: QPointer: Aucun fichier ou dossier de ce type
    src/Form.cpp:2:23: error: QCloseEvent: Aucun fichier ou dossier de ce type
    In file included from src/Form.h:4,
                     from src/Form.cpp:1:
    build/ui_Form.h:23: error: expected constructor, destructor, or type conversion before ‘class’
    make[1]: *** [build/Form.o] Erreur 1
    make[1]: quittant le répertoire « /home/jad/testCrossCompilation »
    make: *** [release] Erreur 2
    alors je voudrais bien que vous me montrez la source de mon probl�me s'il vous plait !

Discussions similaires

  1. Cross-compilation de Qt4
    Par dourouc05 dans le forum Qt
    R�ponses: 4
    Dernier message: 13/11/2009, 09h17
  2. Cross-compilation avec GCC 4 sous Windows pour Linux
    Par dourouc05 dans le forum Contribuez
    R�ponses: 0
    Dernier message: 08/04/2009, 18h25
  3. compiler qt sous linux et windows
    Par lisco dans le forum Qt
    R�ponses: 2
    Dernier message: 09/03/2009, 22h09
  4. [Free Pascal] Cross-compiling Windows -> Linux : comment faire ?
    Par zafo dans le forum Free Pascal
    R�ponses: 5
    Dernier message: 01/03/2007, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo