I'm looking for a good and easy in maintenance portable build system for C++ projects. Main platforms should include Windows (Visual Studio 8+) and Linux (gcc); Cygwin may be an advantage. We're considering two main possibilities: CMake and Boost.Jam. SCons can be also an option, but I haven't investigated it yet. CMake and Boost.Jam seem to have the following traits:
CMake:
- (+) generates native "makefile" (solution for Windows, project for Eclipse)
- (+) extensions for testing and packaging
- (-) demands a configuration file in every project folder
- (-) based on a little too verbose peculiar language
Boost.Jam:
- builds by itself with no intermediate steps
- (-) doesn't generate native solutions/projects
- (+) concise language similar to the classic makefile
- (+) intuitive support for properties like multithreading and static/dynamic library
What are other possibilities and what is really preferable after experience? What build systems can create a solution on the way?