[Development] CMake Workshop Summary

Simon Hausmann Simon.Hausmann at qt.io
Thu Feb 21 06:58:33 CET 2019

I tend towards Alexandru’s approach for the sake of a maximal parallel build. But it’s not evident yet whether this approach is feasible or whether perhaps the external project solution gives better results in terms of maintenance / correctness.

With other modules getting wip/cmake branches I can only invite to join, experiment with “super builds” and contribute. We also have an irc channel on Freenode, #qt-cmake.


On 21. Feb 2019, at 00:28, Croitor Alexandru <placinta at gmail.com<mailto:placinta at gmail.com>> wrote:

This is why for Qt For Python, we've opted to make a superproject that doesn't use ExternalProejct, but rather uses add_subdirectory on each subproject. The advantage is that you can open the superproject CMakeLists.txt directly in Qt Creator, and get code completion and all the goodies for the whole project. And users can still choose to build each subproject separately (or rather that's what the CI does at the moment_.
I don't know whether that would be feasible for qt5 though, given there are a lot more subprojects and files and targets. I'm mainly concerned with the performance aspect of it.

On Wed, Feb 20, 2019 at 10:36 PM Matthew Woehlke <mwoehlke.floss at gmail.com<mailto:mwoehlke.floss at gmail.com>> wrote:
On 13/02/2019 05.06, Simon Hausmann wrote:
> 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.

For (2), you might want to consider a "superbuild", i.e. a separate
CMake project that just builds a bunch of external projects¹, each of
which is a Qt module.

Some advantages over a simple script or Makefile are that users can
select what modules they want, and you could probably set it up so that
users can choose what version of Qt they want to build (e.g. LTS, latest
release, dev, ...).

The major disadvantage of "superbuilds" is they tend to be not-great for
people actually hacking on the code.

(¹ https://cmake.org/cmake/help/latest/module/ExternalProject.html)

Development mailing list
Development at qt-project.org<mailto:Development at qt-project.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20190221/d74d9c15/attachment.html>

More information about the Development mailing list