[Development] CMake Workshop Summary

Simon Hausmann Simon.Hausmann at qt.io
Wed Feb 13 11:06:13 CET 2019



We briefly discussed the topic and it's my understanding that an agreement exists to support two types of builds:

    (1) Build a repo, install it, build the next repo, install it, etc.
    (2) Have a super-project that allows building all of Qt with one call to "cmake", a call to "cmake --build" and finally "$maketool install".

The latter has not been "developed" yet but I think it's necessary to allow for a convenient transition for the users of Qt.

Simon
________________________________
From: Alexandru Croitor
Sent: Wednesday, February 13, 2019 10:56
To: Simon Hausmann; development at qt-project.org
Subject: Re: CMake Workshop Summary


Hi,


Thanks for the write up and summary.


Do you know if there has been any discussion on separate module builds vs qt5 builds?

aka

cd qtbase && cmake && make install && cd qtsvg && cmake && make install

vs

cd qt5 && cmake && make install

?

________________________________
From: Development <development-bounces at qt-project.org> on behalf of Simon Hausmann <Simon.Hausmann at qt.io>
Sent: Wednesday, February 13, 2019 10:33:13 AM
To: development at qt-project.org
Subject: [Development] CMake Workshop Summary

Hi,

On Monday/Tuesday a bunch of us met at KDAB offices in Berlin to accelerate the attempt of building Qt with CMake. I'd like to give a brief summary of this workshop.

Who: Jean-Michaƫl, Liang, Volker, Mikhail, Kevin, me, Tobias, Kai and Albert.

A very early visible artifact was the creation of a wiki page (like all good workshops ;-)

    https://wiki.qt.io/CMake_Port

With such a large group, we were able to make good progress:

    * We were able to fix the artifacts of "make install" in qtbase to allow for building an external module (qtsvg) and sample apps. The plan for allowing people to develop apps that work with Qt 5 and Qt 6 is quite simple API wise:

        (1) In your application use either find_package(Qt5) or find_package(Qt6)
        (2) Always use Qt::Core, Qt::Gui, etc. for linkage
        (3) We want to add the "plain" Qt::Core, Qt::Gui, targets also to Qt5's cmake support

    * The script to converting .pro files to CMakeLists.txt is becoming really good. The goal is to convert all scopes and (source) file names correctly. Right now the repo contains incremental conversions with hand-edits.

    * We're working on installing the latest cmake (as required) in the provisioning setup, so that we can get a building CI as soon as possible.

    * We were able to verify that cross-compilation works well. The main challenge is ensuring that third-party libraries that used to be copied in src/3rdparty are either installed in the sysroot or can be found outside.

    * We discussed and experimented with different ways of making static builds robust. So static builds themselves work already, but what we're looking into in particular is an automatic way of propagating Qt internal dependencies (such as double-conversion) correctly to the build process of the application that is not fragile.

    * We added a lot more plugins and platform support libraries to the build process and did many improvements to the finding of external libraries.


Our overall next goal is completing the build on Linux, macOS and Windows, cross-compilation, static builds and basic CI build support.


Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20190213/585ce170/attachment.html>


More information about the Development mailing list