I am sure cmake is a great system in the right hands but I once had to work with it and there was like only very little official documentation and some stuff didn’t even work as described.
IMO CMake is perfect for large, minimally configurable projects. It handles dependencies for incremental builds well (though maybe that's more the build system (make, ninja, etc.) than CMake itself), and I personally enjoy using it.
However, once people start getting clever with it, it quickly becomes incomprehensibly complicated.
It is damn hard to write tooling for C++ projects: There are no standard ways to do anything, so you need to add lots of options just to cover a range of project configurations. Those add a lot of complexity very fast, which is unrelated to the actual task you want to solve.
CMake is bad and only usable if you write your configuration perfectly.
I don't agree. I find CMake to be hands down the best build system generator out there, and allows the cleanest, most straight-forward projects you can think of.
The problems with CMake generally come from inexperienced developers not doing what they are doing and thinking that CMake is some kind of Basic-type scripting language, and in the process making a big old mess of everything they touch.
As a rule of thumb, if any of your CMakeLists.txt file has an if() in it, odds are you messed up already and should reconsider what you are doing.