
Pre-configuration is, IMO, going backwards. If I have to rely on running some tool to get to the code I want to use it's *much* less likely I'll use that code.
I understand these reasons for header only libraries but for any compiled libraries you have to build them in any case. Also it is unlikely that ABI stable libraries would be header-only probably only very few one.
Real portability means not requiring pre-configuration!
Unfortunately when your write cross platform code for multiple compilers and libraries it is impossible to do this with any kind of configuration. (See the size of boost/config) However, compile time configuration is generally much more reliable then any other "defines-only" based. I have had issues when some important parts of Boost where broken on arm platform because of lack of proper configuration. Simple compile time checks like "check_cxx_source_compiles" would save lots of headache in system configuration. Not talking about the fact the single config.hpp file would save lots of compilation time instead of browsing over tens files in boost/config/* directory. Note: Boost has lots of header only libraries, Boost::abi would probably have almost any library compiled, so it is reasonable require compile time configuration. Artyom