[Development] Build system for Qt 6
lars.knoll at qt.io
Mon Oct 29 13:17:04 CET 2018
As you will probably remember, there have been lively discussions around what kind of build tool to use for Qt 6 both during Qt Contributor Summits as well as on this mailing list.
There has been a strong consent that we should move away from qmake as our build tool for Qt due to many shortcomings and the burden we have maintaining the system.
Thiago wrote a set of relatively strict requirements for such a build tool in his mail in July. While some of the requirements had a bit of a Linux specific background, they have been a good basis.
There have been rather lively discussions around alternatives, but most focused around two possible choices for us: Qbs and cmake.
Qbs is something that has been developed almost exclusively by The Qt Company. As such, TQtC had to also look at it from a business perspective and how it fits into the larger picture of making Qt successful. To make a long story short, while Qbs is pretty cool and interesting technology, it doesn’t really help us expand the Qt ecosystem and usage.
To make Qbs really successful would require a rather large effort and investment in promoting it towards the larger C++ ecosystem as a new build tool. At the same time it has to be an open source product to stand any chance in the market. Together this makes it challenging for TQtC to see how to recover that investment. Thus this investment would be at the expense of other things we’d like to do, like improving our IDE, working on rearchitecting and cleaning up our core frameworks for Qt 6 or the design tooling we are currently investing into. The Qt Company believes that those other investments are more important for the future of Qt than our choice of build tool.
As such, we were left with the question on whether we need Qbs as the build system for Qt 6 or whether cmake (as the other alternative) would be up to the task.
Given that background, we’ve done some more research on using both Qbs and cmake to build Qt. Both projects did give us good results but we were actually surprised on how far we got with cmake in a rather limited period of time.
In addition, cmake has the advantage of being very widely used in the C++ ecosystem (amongst many others by KDE), has a very wide support in many IDEs and other tools (e.g. VCPkg, Conan etc.), and there’s a lot of knowledge about the build system available in the ecosystem. Using it with Qt 6 would also mean that we can focus our support on two build systems for our users (qmake and cmake) and we would not have to add a third one to the mix.
Given that we are confident we can build Qt 6 with cmake, I believe that it makes most sense to follow down that route. In case you’re interested, you can have a look at the cmake prototype code for qtbase on Gerrit in the wip/cmake branch. Please also let us know if you’re interested in helping with the effort of porting Qt’s build system over to cmake.
We have been developing Qbs over the last years, and as such are committed to it for some more time. We are planning on another feature release in the first quarter of next year and will support it in Qt Creator for at least another year. Qbs is open source and if someone wants to take over and develop it further let us know as well. I’d also like to use this place to thank Christian and Jörg for all their great work on Qbs (and of course also anybody else who contributed to it).
More information about the Development