Global customization: configure again?
Different projects assume different environment. Different environment require customization by hands or auto-configuration.
Of cause 'auto' assume 'user not involved into configuration process'. Looks like good! But in reality this designate that make/configuration system propagate own point of view for project's environment, and often hide this assumptions from user.
My desision is: I assume some 'default' configuration, but if this configuration not serve you needs, you may explicitly say you preferance. In this terms, utility that help you collect you specific requirements is useful.
My makesystem provide 'configure' script too. But in contrast to autotools, this script only provide help in writing useful options, show available options and describe ones. Not more.
If project require some component (say, boost::program_options), but apropriate libraries and/or headers not available, then you will see explicit error during compilation process, and this is only point where project depends upon boost::program_options. If this would checked by configration process, the project would has two points of dependency from boost::program_options: within configuration script and within project itself.
./configure --help Configuration utility. Usage: configure [options] Available options: --target=<target> target platform (cross-compiling) --help print this help message and exit --with-stlport=<dir> use STLport in catalog <dir> --without-stlport compile without STLport (default) --with-boost=<dir> use boost headers in catalog <dir> --with-system-boost use boost installed on this system --with-msvc=<dir> use MS VC from this catalog --with-mssdk=<dir> use MS SDK from this catalog --with-mwcw=<dir> Metrowerks CodeWarrior compiler catalog (useful for mw* compilers) i.e. something like "c:/Program Files/Metrowerks/CodeWarrior" --with-nwsdk=<dir> use Novell NDK/SDK from this catalog (useful for *-*-netware target) i.e. something like "c:/Novell/ndk/nwsdk" --with-extra-cxxflags=<options> pass extra options to C++ compiler --use-static-gcc use static gcc libs instead of shared libgcc_s (useful for gcc compiler, that was builded with --enable-shared [default]; if compiler was builded with --disable-shared, static libraries will be used in any case) --clean remove custom settings (file Makefiles/config.mak) and use default values --with-cxx=<name> use <name> as C++ compiler --with-cc=<name> use <name> as C compiler --use-compiler-family=<name> use compiler family; one of: gcc GNU compilers icc Intel compilers mwccnlm Metrowerks CodeWarrior for Novell Netware aCC HP\'s aCC compilers CC SunPro\'s CC compilers default is 'gcc' family --without-debug don\'t build debug variant --without-stldebug don\'t build STLport\'s STLP_DEBUG mode --enable-static build static --disable-shared don\'t build shared