[Development] moc output from non-local tool build

Marius Kittler mkittler at suse.de
Mon Sep 13 18:13:02 CEST 2021


Am Freitag, 10. September 2021, 16:58:55 CEST schrieb Thiago Macieira:
> Qt 6 supports using the moc from a different build of Qt, to help with the
> bootstrapping issue and also so you don't always run a debug-mode moc in
> your debug builds of Qt.
> 
> Is that moc required to be from the same Qt version as the Qt you're trying
> to build? Or is there a leeway in accepting slightly different builds?
> 
> We haven't yet made changes to the moc output that would make it
> incompatible, but I am thinking of doing that now for plugins and I'd like
> to know if I have to keep compatibility with a slightly older moc. It's not
> a problem, I just want to know if this is required.

>From my GNU/Linux user/distributor perspective it would be great if the host 
moc could be slightly newer than the target Qt libs. So if the distribution 
upgrades the regular Qt package the cross packages (targeting mingw-w64 and 
Android) would still be usable until they're updated as well. I don't expect 
that there would be a big delay. So it would be sufficient if moc would be 
able to generate files which can still be used with the previous release of 
Qt, so moc from Qt 6.2.0 would be able to generate files for Qt 6.1.3 
libraries.

To me it would make sense adding a CLI flag to moc to specify the target 
version and the CMake build scripts would pass it automatically (instead of 
rejecting the newer moc completely like it is currently implemented).

Of course all of this effort would be quite fruitless if other tools like uic 
would not support the same as well. Likely those tools are quite 
unproblematic. Maybe only the build system needs to be changed to accept newer 
host versions.

Alternatively it would also be interesting to provide a "tools only" build to 
be able to provide host tools of the required version. However, I actually 
like not having to build tools over and over again for every target so a 
"compatible" moc sounds much better to me.




More information about the Development mailing list