
On Thu, May 10, 2012 at 10:52 AM, Beren Minor <beren.minor+boost@gmail.com> wrote:
I think Boost.Build and CMake are at a totally different level of abstraction: CMake is low-level when Boost.Build is high-level. For comparison with other build systems, Make, SCons are at the same level as CMake. Premake is probably closer to Boost.Build (I don't know enough others but there's not a lot being as high-level as BBv2).
Of course SCons and CMake still have a major advantage over Make because of their portability. But they offer a very little abstraction over simple Make. Surely, there are some built-in rules to easily create shared/static libraries or executables, but you still have to define a lot of things manually. As an example, I quickly realized that CMake is simply unable to create both shared and static version of a library if you don't explicitly write the two rules to build them.
I've got the same problems with CMake. Something as simple as a cross-platform build file for a Hello World app or library isn't possible. Need the static runtime (on VC)? Got to hack command line switches. PCH? Not supported. Automatic target naming for multiple library variants? Not supported. -- Olaf