Vraag Qt 5 bouwen op Linux, voor Windows


Ik wilde mijn Qt 4-app migreren om in plaats daarvan Qt 5 te gebruiken. Deze instructies mislukt, vanwege enkele verschillen met hoe MXE bouwt Qt 5 op, inclusief het feit dat het gebruik maakt van gemoduleerde Qt-tarballs, in plaats van één grote tarball.


45
2018-01-05 09:50


oorsprong


antwoorden:


Hier zijn de volledige instructies:

  • Snap je:

    git clone https://github.com/mxe/mxe.git
    
  • Installeren afhankelijkheden bouwen

  • Build Qt 5 voor Windows:

    cd mxe && make qtbase
    

    Dit zal eerst zijn afhankelijkheden en de tools voor cross-build bouwen; Het duurt minder dan een uur op een snelle machine met fatsoenlijke internettoegang.

    Vanwege de nieuwe modulaire aard van Qt 5, bevinden verschillende belangrijke Qt-componenten zich nu in verschillende tarballs. De hierboven geselecteerde, qtbase, zou je genoeg functionaliteit moeten geven om gewone GUI-apps uit te voeren, en dat is alles wat ik nodig heb voor mijn eigen (kleine) app.

    Als je in plaats daarvan alle Qt 5 wilt bouwen, moet je het uitvoeren make qt5 (in plaats van make qtbase). Houd er rekening mee dat het veel langer zal duren om te voltooien, dus zorg ervoor dat u de extra functionaliteit nodig hebt.

  • Ga naar de directory van uw app en voer de Qt Makefile-generator uit:

    <mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
    
  • Bouw je project:

    make
    
  • Je zou het binaire bestand in de ./release-map moeten vinden:

    wine release/foo.exe
    

Enkele opmerkingen:

  • Dit is getest op mijn 64-bits Debian 8 en natuurlijk op Windows.

  • De uitvoer is een 32-bit statisch uitvoerbaar bestand, dat goed werkt op 64-bit Windows.

  • Als je een 64-bits uitvoerbaar bestand wilt, moet je Qt bouwen met:

    make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
    

    De standaard MXE_TARGETS waarde is i686-w64-mingw32.static.


76
2018-01-05 09:50



Het git checkout-commando is niet correct. Je moet nu hun stabiele tak krijgen of het zal niet lukken om te bouwen.

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

zou moeten zijn...

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

Dat alleen repareerde al mijn problemen met qtbase building, maar liet geen qt-map achter als ik klaar was. Het doel van qt5 zou mislukken met obscure fouten. Verwijderde map, stabiel uitgecheckt en het werkte foutloos.


5
2017-09-03 20:17