Cross-platform make systemhttp://www.cmake.org
CMake is used to control the software compilation process using simple
platform and compiler independent configuration files. CMake generates
native makefiles and workspaces that can be used in the compiler
environment of your choice. CMake is quite sophisticated: it is possible
to support complex environments requiring system configuration, pre-processor
generation, code generation, and template instantiation.