Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building Qt 5 on Linux, for Windows

Tags:

qt

qt5

mxe

I wanted to migrate my Qt 4 app to use Qt 5 instead. These instructions failed, due to some differences with how MXE builds Qt 5, including the fact that it uses modularised Qt tarballs, instead of one large tarball.

like image 968
tshepang Avatar asked Jan 05 '13 09:01

tshepang


People also ask

Does Qt work on Windows?

Qt's support for different Windows platforms is extensive and mature. To download and install Qt for Windows, follow the instructions on the Getting Started with Qt page.

How long does it take to build Qt5?

2 Answers. Show activity on this post. Building Qt takes a couple of hours even on a fast system if you only do the default non-parallel build. By default it also pulls in lots of libraries that you may not need.


2 Answers

Here are the full instructions:

  • Get it:

    git clone https://github.com/mxe/mxe.git 
  • Install build dependencies

  • Build Qt 5 for Windows:

    cd mxe && make qtbase 

    This will first build its dependencies and the cross-build tools; It should take less than an hour on a fast machine with decent internet access.

    Due to the new modular nature of Qt 5, various major Qt components are now in different tarballs. The one selected above, qtbase, should give you enough functionality to run ordinary GUI apps, which is all I needed for my own (smallish) app.

    If you want to build all of Qt 5 instead, you'll need to run make qt5 (instead of make qtbase). Note that it will take a lot longer to complete, so be sure that you need the extra functionality.

  • Get to the directory of your app, and run the Qt Makefile generator tool:

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

    make 
  • You should find the binary in the ./release directory:

    wine release/foo.exe 

Some notes:

  • This was tested on my 64-bit Debian 8, and on Windows of course.

  • The output is a 32-bit static executable, which will work well on 64-bit Windows.

  • If you want a 64-bit executable, build Qt with:

    make MXE_TARGETS=x86_64-w64-mingw32.static qtbase 

    The default MXE_TARGETS value is i686-w64-mingw32.static.

like image 131
tshepang Avatar answered Sep 19 '22 14:09

tshepang


The git checkout command is not correct. You now have to get their stable branch or it will fail building.

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

should be...

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

That alone fixed all my issues with qtbase building but leaving no qt folder when done. Then qt5 target would fail with obscure errors. Deleted folder, checked out stable and it worked flawlessly.

like image 33
AcidTonic Avatar answered Sep 16 '22 14:09

AcidTonic