Boost logo

Boost-Build :

From: Adder (adder.thief_at_[hidden])
Date: 2007-09-23 10:08:58

Hi there,

I think it would be very useful to be able to specify features that
are propagated, but only to the targets that have declared their
acceptance of (= dependency on) those features.

For example, one might want to build two versions of her application:
ANSI and Unicode; she declares:

  feature charset : ansi unicode : symmetric propagated ;

However, she also wants to link with a library that does not care
about "charset" (eg: a Boost library); it is unnecessary to build
that library in two versions (= sub-directories) (charset-ansi and
charset-unicode); thus, the feature should not be propagated to it.

The workarounds that I have come up with so far are unsatisfactory;
they do not scale well when multiple features/projects are involved;
for example:

  feature charset : neutral ansi unicode : propagated ;
  exe Main : Main.cpp /boost//regex/<charset>neutral

I think a better solution might look like this:

  feature charset : ansi unicode : propagated-only-to-supportive-targets ;
  lib Lib1 : Alfa.cpp : <supports-propagation-of>charset ;
  lib Lib2 : Beta.cpp ;
  exe Main : Main.cpp Lib1 Lib2 : <charset>unicode ;

Can this be implemented (if so, how) ? Or do you know a better
work-around ?

Thank you for your time.

Best regards,

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