4) #include
in the files that actually use the desired macros.
That seems like the correct solution to me: a file should include the headers documented to define the things it needs and not rely on implicit includes (even though through laziness we do that all the time!).
5) #include
#include If I had been writing the code myself, I probably would have selected option (4). What do others think?
I would go with option (5) :-) Or a variation of that as needed.
Note/Warning, I was not planning on merging Predef develop to master until after the next release (as the docs need to be updated and quickbook is giving me problems ATM). So whatever change that depends on those added defs will need to be postponed until after the next release.
That seems like a good reason not to create a dependency to predef, at least not yet, I'd like to be able to do one more merge of develop->master in Boost.Config before the next release. Cheers, John.