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
<< Prev Next >>