From: Vladimir Prus (ghost_at_[hidden])
Date: 2003-03-05 08:23:59
David Abrahams wrote:
> > lib l : l.cpp ;
> > exe a : a.cpp l ;
> > Both targets are build with default value of 'user-interface': 'console',
> > and that's right. However, when building "a", you also have to build "l".
> > Since user-interface is not propagated, "l" is build for a second time,
> > this time without any value of 'user-interface'.
> That doesn't make any sense. "No value" should only be possible for
> optional features; since it's not optional, "console" is the default
> and should be used.
Your reasoning is sound. This does not work this way yet. The only way
where default properties are applied is during expansion of build request,
which happend on the top-level. So, non-propagated properties are stipped
along the way, like I described.
I've being thinking for some time about a change to overall build process. I
think that build request as given by user should be expanded, but default
properties should not be added. After that, resulting property sets are
passed to all directly requested main targets. Defaults will be added by
> > In general, we probably should have a rule that all non-free
> > non-incidental features should be declared propagated. I don't mean to
> > enforce this rule in the code, but just a guideline for adding new
> > features.
> I think it might be reasonable (as I think we agreed long ago) to have
> a high-level feature declaration interface which takes care of things
> like that automatically. But maybe we're not ready to do it until we
> know more about the kind of features that need to be declared.
True, we're not ready. I believe this is the first high-level convention
we've explicitly formed.
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk