
My understanding is that both CMake and Premake are meta-build system, they don't build anything, only generate build scripts for your favorite tools (make,MSVS, etc. )
To be honest, it actually matters if you care about integration of the build system with other tools (ie: if it is able to generate Eclipse/VS project files instead of plain old Makefiles), but in my opinion this does not come first when looking at the advantages of a build system (you should be able to configure the IDE to use any build system instead of the opposite). What matters to me is what you have to write in order to describe the way your project can be built. I don't want to lose days writing CMake rules to support this system or this compiler, putting the right flags and building the right targets, I want to spend a few minutes writing simple build rules, and spec the rest of these days writing my CPP code to make it support all the compilers and OSes the build system can address out of the box. Boost.Build allows the user to describe the targets in a very high-level fashion, without having to dive into details or compiler specifics. Whereas with CMake you have to write low level rules, explicitly building shared or static (or both if you write both rules) version of a library, checking compiler capabilities, checking what is the OS where you are, etc... -- Beren Minor