Boost logo

Boost :

Subject: Re: [boost] Understanding Jam Files
From: Axel Ismirlian (aismirl_at_[hidden])
Date: 2014-07-25 16:59:46

If I wanted to add a missing property for a particular platform where would
I go about doing that? Are the properties initially taken from the OS
specifications that boost reads from the machine somewhere or how does that
work? Should I make a user-config.jam to add it? I have looked into
property-set.jam, property.jam, and feature.jam, but where does their data
come from?


From: Steven Watanabe <watanabesj_at_[hidden]>
To: boost_at_[hidden]
Date: 07/24/2014 01:47 PM
Subject: Re: [boost] Understanding Jam Files
Sent by: "Boost" <boost-bounces_at_[hidden]>


On 07/24/2014 09:35 AM, Axel Ismirlian wrote:
> I have been working on boost for about a month now, but I still don't
> understand boost's build configuration very well. More specifically, I do
> not understand where the properties array gets filled in and where that
> data comes from. I saw the property.jam file which seems to refine the
> of properties and take away unmet conditions, and bind dependencies. I
> saw the property-set.jam file which creates property lists from raw
> properties, but where do the raw properties come from exactly? Does every
> property-set created come through this file?
> It would be very helpful if someone could point me in the right

Each target has three sets of properties: requirements,
default-build, and usage-requirements. When you build
a target, you pass it a property-set. The properties in
this property-set are overridden by the requirements, and
the default-build is used to fill in missing properties.

For example:

exe test : test.cpp : <link>static : <threading>multi ;

If you build test with <link>shared, <threading>single,
then the requirement of <link>static overrides <link>shared,
but the default-build of <threading>multi is ignored, because
<theading>single is already present.

In addition most features have a default value and
properties can be specified on the command line.

When building dependent targets, all features with
the propagated attribute will be passed on to the

For example, given:

obj test.o : test.cpp ;
exe test : test.o : <link>static <define>BOOST_ALL_NO_LIB ;

test.o will be built with <link>static, but not

property-set.jam, property.jam, and feature.jam contain
the various functions for the low-level manipulation
of properties.

In Christ,
Steven Watanabe

Unsubscribe & other changes:


Boost list run by bdawes at, gregod at, cpdaniel at, john at