Boost logo

Boost-Build :

Subject: [Boost-build] feature, properties, variants, and all the rest
From: Stefan Seefeld (stefan_at_[hidden])
Date: 2016-12-23 11:05:57


I'm still working on my b2 Python prototype (haven't given up just yet !
;-) ). Instead of reinventing everything from scratch, I'm trying hard
to reuse ideas from b2 wherever I can. However, that is quite hard,
given the sparseness of its documentation...

Right now I'm trying to understand properties and how they propagate
from the command-line & jamfiles to targets and actions.

So let me outline my understanding of these concepts, combined with a
few basic questions I have:

* Property sets are sets of properties (duh !). What does the
'PropertySet' class (in build/ add over a simple set()
(or list()) of property instances ?

* A Property is a feature with an associated value. What is a LazyProperty ?

* A Feature is a type of a property: it defines certain property
attributes, as well as ways to interpret it. Feature values are
typically restricted to finite sets of values, unless they are 'free'.
What attribute decides whether values are accumulative or exclusive ?
(For example, the 'link' value is either 'static' or 'shared', but
'include' is an accumulative set of paths.) Further:

  - what is a 'sub-feature' ?

  - what is a 'symmetric' feature ?

  - what is a 'composite' feature ?

It would be great to see examples of the above. I promise to try to
capture my understanding in a document, so this will at least result in
improved documentation. Please help ! :-)

Many thanks,


      ...ich hab' noch einen Koffer in Berlin...

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at