Boost logo

Boost-Build :

From: David Abrahams (dave_at_[hidden])
Date: 2007-03-27 13:28:08

on Tue Mar 27 2007, Martin Wille <> wrote:

> My question was which of the several way to invoke bjam with toolsets
> arguments is the canonical one.

There is no canonical way. There are three ways, two of which will
induce autoconfiguration

> I still think not use --toolset= leaves some room for confusion.
Sorry, doesn't parse. Do you mean "not using?"

> What happens if I name the build target for my
> generic caching component 'gcc'? What is 'bjam gcc' supposed to mean in
> that context?

That is certainly an issue, but it goes beyond toolset names, because


is a shorthand on the command-line for


for *any* implicit feature xxx. Implicit features are specially
designated because their value names are deemed sufficiently distinct
that they deserve recognition without the feature name. Toolset is
just one of several implicit features.

> A related question is: why are there several ways of passing arguments
> to bjam? I'm sure I'm not the only one who gets confused by this.

I knew it would be confusing, but not everyone agreed with me.

  --foobar and --foo=bar

are regular options that could control anything in principle. It's
used for things like telling bjam that, when running tests, it should
invoke them under a particular debugger.


is the syntax for setting the value of features in the build request.
You should look at the Boost.Build documentation to fully understand
the significance of features, but they control build properties like
multithread compatibility, static or dynamic linking, and other
elements of the command-line that is eventually used to invoke tools
like compilers and linkers.

Oh, and options like


are low-level options recognized by the bjam executable itself.

Dave Abrahams
Boost Consulting

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