[Development] The sorry state of the Qt6 cross compile experience

Joerg Bornemann joerg.bornemann at qt.io
Tue Feb 23 21:06:55 CET 2021

On 2/23/21 12:27 PM, BogDan Vatra via Development wrote:

OK, biting.

> - first and foremost, we need to waste time to **fully** build and install it
> for host platform (desktop).

No, you don't need a full build. You need the tools that are called by 
the build system. The support for creating a "minimal desktop" build 
could be better, sure. But you're one of few affected people.

 >  Yeah, I know that this was "decided" before TQC
 > switched, overnight, to cmake, but let's face it, it's a BS needed to 
 > the fact that cmake can't build more than one platform at once.

Let's face it. It's a good thing to not compile the same set of tools 
over and over again, and it simplifies the build very much.

> - the cross build installation is broken, instead to copy the tools from the
> QT_HOST_TOOLS folder,  it creates some scripts that has hardcoded paths to
> QT_HOST_TOOLS which runs the scripts from QT_HOST_TOOLS folder. Of course this
> makes the installation unusable on another computer. Even the "lib/cmake/Qt6/
> qt.toolchain.cmake" contains hardcoded paths...

Right. The Qt5 qmake build never had any hard-coded paths. Try again.

> - there is no way to have a standalone cross build installation, we always
> need to ship the whole desktop installation as well (also patch all the files
> from cross installation).

Do interpret this correctly as the second attempt in your mail to kindly 
suggest better support for a minimal desktop build?

> - android cross compilation is so crippled now.  In Qt 5.x times, we used to
> have a nice multi ABI build which built all the android ABIs in one go and it
> created a unified Qt SDK for all these ABIs (same as the Android NDK). In Qt 6,
> that work was trashed... for the same reason: cmake can't handle multiple
> platforms at once...

That's right. We're lacking support for multi-ABI that was hacked into 
the Qt build where we run configure tests for one random architecture 
and use those configure results for all other architectures.
I consider this a good thing.

> - android cross compilation in Qt 6 takes more time to build one ABI  with
> less Qt modules than in Qt5 to build all ABIs and all modules...

And your thorough analysis of the problem is "CMake is BS"?

Don't get me wrong. Your input is always welcome, but maybe we can get 
away from this amusing yet somehow annoying "gramps rants about how the 
past was better" style.



More information about the Development mailing list