From: David Abrahams (dave_at_[hidden])
Date: 2003-03-05 08:59:53
Vladimir Prus <ghost_at_[hidden]> writes:
> 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
> main targets.
That sounds perfectly correct.
"propagated" may be right for this feature, regardless. However, I
really don't understand what the MSVC option does at a deep level, so
it's hard to say for sure.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
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