Hello all,
The quick version of my question:
Where is the best place to specify global defines that are then propagated to all sub-projects?
For example, I need to have something like:
requirements <variant>debug:<define>ENABLE_ASSERTS
that will be true for ALL projects under a certain root directory.
The long version of my question (explained by example):
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.
What is the best way to deal with this problem? Is defining ENABLE_ASSERTS globally somewhere the best solution?
If so, how can I do this?
Cheers,
K.