I mean, a "hello world" CMakeLists.txt can be literally just this:
add_executable(hello hello.c)
And it's cross-platform, can generate Visual Studio/Xcode/... projects, etc. all: hello
That's not really complicated either.This is a good criteria for languages as well.
Program("main", ["main.cpp"])
The problems start once you want configure stages, build directories, portability and install targets, as all of those aspects are extremely lackluster and incomplete in `scons` and you have to reinvent large parts of the build system yourself essentially for anything even mildly complex.`cmake` is much better. The language itself is ugly and takes some getting used to, so it's a little more complicated to get started with then `scons`. `cmake` generating `Makefile`s instead of actually building the project itself also adds a layer of complexity. But once you understand the basics it's much easier to get a fully functioning build going, including configure stages, build directories, portability and all that, as cmake has all of that integrated and working right out of the box.
`cmake` feels like a complete build system, while `scons` feels like a good start for a build system that was abandoned at the halfway point.
I still use plain `make` for some Python projects (mostly .PHONY targets to run `pylint`, `autopep` and friends), but for everything that needs to get compiled `cmake` is much easier to use than plain `make`, as you don't need to reinvent a build system yourself, it already comes with almost everything you need.
make hello
Easier?
demo.cxx demo_b.cxx CMakeLists.txt
$ cat src/CMakeLists.txt
cmake_minimum_required (VERSION 2.8.11)
project (HELLO)
add_executable (helloDemo demo.cxx demo_b.cxx)
$ mkdir bin
$ cd bin
$ cmake ../src
SNIP
$ make
$ ./helloDemo
$ scons