Boost logo

Boost-Build :

From: Kostas Kostiadis (kos_at_[hidden])
Date: 2006-04-17 06:53:35


Thanks for the feedback Philip...
I've managed to use project-root.jam properly, and now my Jamfiles look a
lot tidier. There are a few other issues that have cropped up though...
Here comes:

1.
What is site-config.jam used for? (Haven't found any examples of that
anywhere)

2.
>>
>> Where can I get a list of all the possible options I can pass to
>> certain things like "project" or "exe" (e.g. project can take :
>> requirements, : usage-requirements, etc.)
>>
>"project" rule -
>http://boost.org/boost-build2/doc/html/bbv2/advanced/projects.html
>(unless you're talking about the build properties -- I don't know if
>there's a list of those)

I've looked at that when I was reading the manual but there are certain
things it doesn't mention. For example, you can do
        ": usage-requirements <include>. "
which is very handy, but is not mentioned anywhere in Table 4.1. (of the
link you've posted). That's why I was asking if there is a complete
reference somewhere.

3.
At the bottom of this link
http://boost.org/boost-build2/doc/html/bbv2/installation.html
it mentions that:
" N.B. When bjam is invoked from anywhere in the Boost directory tree other
than the Boost.Build root and its subdirectories, Boost.Build v1 is used by
default. To override the default and use Boost.Build v2, you have to add the
--v2 command line option to all bjam invocations."

Is there an easy way to force bjam to use v2 at all times?

4. (last one :))
I'm having some trouble passing the right #defines across to my build
process. I think this is easier explained by example, so here goes:

Say I have a UTILS lib (in its own folder with its own Jamfile) and one of
its source files has something along the lines of:

#ifdef ENABLE_ASSERTS
#define ASSERT OutputSomeMessageAndHalt
#else
#define ASSERT NothingFunction
#endif

In this lib (i.e. UTILS) the Jamfile has something like

project UTILS
        : requirements <variant>debug:<define>ENABLE_ASSERTS
        ;

Now say I have another lib, call it MATH, which uses the UTILS lib.
Because I can't specify the order things are build, ASSERT ends up being the
NothingFunction during debug builds of the MATH lib.

The only way I found of "fixing" this, is by adding this
        : requirements <variant>debug:<define>ENABLE_ASSERTS

to project MATH in the math lib Jamfile as well...
This is quite bad because it means I'll have to define ENABLE_ASSERTS in all
the other Jamfiles for all libs and projects that want to use it.
Is there a way to say:

"If a lib X is using the debug version of the UTILS lib, then this
        : requirements <variant>debug:<define>ENABLE_ASSERTS
should also be true for X lib and therefore ASSERT should evaluate to
OutputSomeMessageAndHalt rather than NothingFunction."

Thanx in advance,
K.


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