On Thu, 2015-03-19 at 23:13 +0000, Krzysztof Kosiński wrote:
5. CMake
I would rather use Waf. CMake has its own, sloppy scripting language;
writing anything moderately complex in it is an exercise in
frustration. By contrast, Waf scripts can leverage all the mighty
power of Python.

Killer feature: since Waf stores a database of what was compiled, it
support wildcards correctly. As in, when the set of files matched by a
wildcard in the build script changes, it will automatically recompiles
the correct files, without the need to modify build scripts. CMake
cannot do this, because it just generates makefiles, and Make cannot
support wildcards in this manner because it does not have any
persistence beyond what is stored in the file system.

That is true for the default setup. CMake can also build ninja files which do a pretty awesome job of building quickly and managing the database of dependencies. I like using CMake's Makefile support for reliable builds, but the ninja option for development is definitely a plus.