[Development] Proposing CMake as build tool for Qt 6

Simon Hausmann Simon.Hausmann at qt.io
Thu Jun 6 13:45:14 CEST 2019


In the past months we, some developers from the Qt Company and KDAB,
have made good progress on the port of Qt to use CMake as build tool.
Since the initial prototype, the port has advanced very well and its
current state can be summarized roughly like this:

    * Builds on
      * Windows (desktop)
      * macOS
      * Linux (desktop and embedded)
      * Android (running not tested yet)

    * Static builds and plugins are implemented.

    * Many examples and tests are compiling and running.

    * Several modules outside of qtbase have been ported as well,
      including qtsvg, qtimageformats, qnetworkauth as well as parts of

    * There are early-warning style CI builds (no tests) running and
      reporting results to patches uploaded to Gerrit.

    * There is tooling in-place to re-generate cmake files from
      .pro/configure.json files, providing a method of dealing with the
      long term maintenance of merging from qmake based Qt (5) branches.

    * Very basic support for compiling applications (not modules) with qmake
      against a CMake built Qt.

Many of the more fine-grained details are tracked in JIRA under an Epic:


as well as in the Qt Project Wiki at


Detailed steps on how to build Qt with CMake are available at


There are some caveats with the above as well, but overall we feel confident
about it. Therefore we would like to propose CMake as the build tool for Qt 6
and would like to achieve a decision within the Qt project by lazy consensus.

For the decision making it is important to also lay out the proposed path
forward. We would like to merge the wip/cmake branch(es) into the wip/qt6
branch of qtbase and other applicable repositories. This would pave the way
for a transition that could look like this:

    (1) The CMake build system related files and scripts become visible
    to Qt 6 development. Both build systems co-exist.

    (2) The wip/qt6 branches continue to be built using qmake in the CI
    until we are ready to switch.

    (3) When the corresponding changes in Coin and qtbase are ready, a
    new configuration file in qtbase would switch the qtbase build over
    to use cmake for some configurations.

    (4) Through iteration all configurations are changed to use cmake.

    (5) The .pro/.pri files of projects can be removed -- the qmake
    sources themselves as well as mkspecs/features (and potentially
    other files) remain.

We are looking forward to a productive discussion and feedback.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20190606/fe8ad4dd/attachment.html>

More information about the Development mailing list