|
Boost-Build : |
From: David Abrahams (gclbb-jamboost_at_[hidden])
Date: 2003-08-29 14:25:59
Vladimir Prus <ghost_at_[hidden]> writes:
> David Abrahams wrote:
>> Christopher Currie <Christopher_at_[hidden]> writes:
>> >> I think the problem here is that the user doesn't have a way to say,
>> >> "this thing is really just a dependency of some other main target;
>> >> don't build it by default".
>> >>
>> >> dependency lib B : b.cpp ;
>> >>
>> >> or
>> >>
>> >> lib B : b.cpp ;
>> >> don't-build B ;
>> >>
>> >> or some such thing.
>> >
>> > I believe Milestone 6 has a rule, 'explicit', that does what you want.
>> >
>> > http://boost.sourceforge.net/boost-build2/boost_build_v2.html#explicit_ru
>> >le
>>
>> Great! But the contentious issue will still be: "can we *please* get
>> rid of property-adjuster?"
>
> The problem is that "explicit" provides a different solution that
> property-adjuster. Back you your example:
>
> exe A : <library>B c.cpp : <rtti>off ;
> lib B : b.cpp ;
>
> If I run "bjam define=FOO", I expect everything to be built with
> -DFOO. I don't expect two versions of "B" to be created. If "B" is
> explicit and we have no property adjuster, only one version is
> created. But that version is not compiled with -DFOO. "explicit",
> therefore, eliminates build of the library that we want to use.
>
> The problem, you know, if that while I find semantic of "bjam
> define=FOO" quite clear from the user POV, I don't know what users
> say and if they care at all. Maybe, this "smart" behaviour is really
> not needed, but I can readily imagine users writing emails saying
> that define=FOO has no effect and Boost.Build is buggy.
I think implementing this behavior now is an example of "giving away
the store"; we should probably wait until users ask for a solution.
Features are easy to add and hard to take away, and may (as in this
case) be very costly in terms of complexity.
Ultimately, I also believe property-adjuster is the wrong way to solve
that problem, if it does need to be solved. Ali was right when he
suggested that it is important to be able to tag specific instances of
properties for propagation in either direction (to dependents or to
dependencies). The simple solution would tag all free features in the
build-request for propagation to dependencies.
-- 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