[Development] Build system for Qt 6

Oswald Buddenhagen Oswald.Buddenhagen at qt.io
Fri Nov 2 18:39:29 CET 2018


On Fri, Nov 02, 2018 at 11:59:39AM -0400, Matthew Woehlke wrote:
> On 01/11/2018 08.10, Oswald Buddenhagen wrote:
> > no, instead i told you that your premise of needing a _global_ solver is
> > wrong.
> 
> ...but you have failed to explain how dependency resolution will succeed
> in a scenario such as I have outlined.
> 
> Actually, I realize now there is a possible answer: it *doesn't*
> succeed. It finds A.X-1.2. Then it finds A.Y-1.1 which is incompatible,
> and gives up, forcing the user to manually correct the situation.
> 
i honestly don't understand what your problem is. the only difference
between the approaches is that you centralize the meta data, while i
distribute it. TTA works exactly the same way.

> > users want to think in terms of namespaces, not packages. at
> > least i do. at least for modules that aren't part of "qt" but are hosted
> > on qt-project infrastructure. qtwebkit is an excellent example, and
> > qtwebengine will probably follow soon due to wanting release cycle
> > decoupling.
> 
> ...but having a separate release cycle is an excellent reason to *not*
> be the same package. And I'm not entirely convinced that users shouldn't
> be aware of that distinction, because it may well matter when they need
> to specify more fine-grained version requirements (i.e. '5.8' vs. '5').
> 
> For that matter, what happens to namespacing? Can I do this?
> 
>   find_package(Qt 5.8 COMPONENTS Core Gui)
>   find_package(Qt 2.1 COMPONENTS WebEngine)
> 
sure you can.

> Let's say we allow that... what then is Qt_FOUND? Qt_VERSION?
>
not relevant in the qbs model, because "package" isn't a thing there -
that's only a convenience syntax for importing multiple modules in one
go.

> Do I have targets Qt::Core and Qt::WebEngine?
>
yes

> Do we allow targets in the same namespace that have different
> versions?
> 
yes, provided they don't break each other.

> OTOH, there is nothing stopping you from producing component-level
> compatibility CPS's that are just references to the individual
> components in a multi-component package.
> 
that's correct, but then you potentially have a problem in the inverse
direction of generating CPS files from a qbs project.

> One reason I am optimistic about CPS's chances re: CMake is that it
> behaves very similarly to how CMake *currently works*. Trying to
> shoehorn in something that works very differently is going to be more
> work and face more resistance.
> 
it certainly is an *improvement*.



More information about the Development mailing list