Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2003-03-12 04:00:31


David Abrahams wrote:
> Vladimir Prus <ghost_at_[hidden]> writes:
> > Rule 2.
> > Directly requested free properties apply to all variants. This means that
> > <define>FOO will always be used when compiling "b.cpp", either with
> > <variant>debug, <variant>release, or any other combination of properties.
> >
> > I just don't know which rule is best. Can anybody offer more reasonable
> > comment?
>
> I think the 2nd rule is much easier to understand.

Hmm.. I believe some time ago you though 1st is better, but I'm not sure.

> However, I also
> think we need a way to shield main targets that are part of the user's
> mental implicit dependency chain from being built directly. In other
> words, a probable scenario for the project in question is that the 'b'
> library is just part of what's needed to build 'a', and a bjam
> invocation without explicitly-requested targets should only build 'a'
> directly.

Yes, that's true. Another, even more important use case: I usually don't want
"stage" targets to be build when I just run "bjam".

> If we had:
>
> exe a : a.cpp b/<variant>release ;
> intermediate lib b : b.cpp ;

I like this syntax (it's better than <supress>true proprty in V1). The only
reservation is that it's not that nice for stages

intermediate stage dist : a b c ;

How stage can be intermediate? Probably "explicit" is better?

> then I think the first rule might make a lot more sense.

That would just reduce the number of directly requested targets, and
therefore, the number of situations where Rule 1 and Rule 2 cause different
behaviour. I'm still at loss.

- Volodya

 


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