[Development] CMake Workshop Summary

Kevin Funk kfunk at kde.org
Thu Feb 21 11:59:20 CET 2019

On Thursday, 21 February 2019 06:58:33 CET Simon Hausmann wrote:
> 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.


I agree, I'd first go into the direction Alexandru mentioned.

To be honest, I personally try to stay away from CMake's ExternalProject as 
far as possible these days, having bitten by them badly a couple of times 
already. They just don't feel like they make anything easier, compared to 
running the commands yourself (main issue: you can't easily get a hold of the 
CMake targets created by a subproject in the superbuild; and you usually end 
up reimplementing parts of the CMake config files...). 

So, yep, add_subdirectory() sounds like the way to go; we'll need to check how 
that performs with the amount of existing Qt submodules, though. We might need 
to do a couple more optimizations of the CMake macros/functions in qtbase.git 
for that.


> 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.
> Simon
> 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_.
> 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:
> 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.
> --
> Matthew
> _______________________________________________
> Development mailing list
> Development at qt-project.org<mailto:Development at qt-project.org>
> https://lists.qt-project.org/listinfo/development

Kevin Funk | kfunk at kde.org | http://kfunk.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/development/attachments/20190221/ec53683a/attachment.sig>

More information about the Development mailing list