[Development] Build system for Qt 6

Christian Gagneraud chgans at gmail.com
Tue Oct 30 08:13:30 CET 2018


Warning: Free sarcasm, i'm not serious (well, maybe a little bit...)

On Tue, 30 Oct 2018 at 18:29, <resurrection at centrum.cz> wrote:
>
> Honestly I feel very disappointed as well with this decision. I feel similarly to others, Qbs is now being phased out so fast (half a year of development, another half a year of maintanance after that it seems). So better get to porting stuff to CMake right away. Having experience with CMake this is gonna be very ugly...

Come on, the CMake project will quickly implement all the Qt project
requirements.
And Qt Creator is about to have full blown support for it.

> What I do not understand is why the decision was qmake + cmake in the first place. Why not Qbs + CMake? Was not the qmake deemed unmaintainable? It is perfectly understandable to tap into wide CMake user base but why ditching Qbs and not qmake? I wouldn't expect people would mourn qmake...

2 unmaintainable systems are better than one.

> Oh and on the point of CMake. Lets write a simple if statement as per docs:
> set(var1 "Hello")
> set(var2 "Hello")
> if(var1 EQUAL var2)
>     message("They are equal")
> endif()
>
> Guess what, it prints NOTHING despite docs explicitly saying this should work. Nothing will help, STREQUAL, MATCHES, dereferencing the arguments, whatever. This will work:
>
> string(COMPARE EQUAL ${var1} ${var2} _cmp)
> if (_cmp)
>     message("They are equal")
> endif()

Looks cool! :P Big improvement over qmake! Writing
Android/IOS/tvOS/embedded Linux/WinRT/whatever is about to get to the
next level, can't wait!

> Yeah, fortunately there is a wide knowledge how to work around this kind of stuff. There are MANY other things like that that will make you cry when writing even simple things in CMake's "language". Not to mention CMake is not a build system, Qbs is.

Don't underestimate it, CMake is GNU m4 but better, like SVN was CVS but better.
Honestly, i never switched to git, I don't need a Ferrari to go fast,
you should see me on my bicycle. It even has a dynamo for the lights.

Come on, haven't you see the new build instructions
cmake -g Ninja
cmake --build . --target install --config release

Makes sense to me. Clear as mud! :)
--build and --target are not to be confused with GNU autotools
build/host/target, but the reader would have spotted that straight
away.
No need to explain '-g Ninja' (Capital N please), it makes sense to
first tell your build system, what build system it needs to use.
Ah yeah, BTW: "sudo cmake --build . --target install --config release".
Just to make sure that your build tree will be own by root b/c CMake
needs to go through the whole build phase before it dares evaluating
the install phase...
With CMake, you should drop your user account and log into X11R6 as
root, like the good old time, it works better with auto login tho.
For extra spice, try systemd's DHCP client.

Chris



More information about the Development mailing list