Frankly, with the inception of modern CMake over a decade ago, the only reason anyone has to stray out of cmake's DSL happy path, comprised of all the tried and true declarative bits, is whether
a) they have to do a very niche/specialized/extremely custom extension to CMake, or
It's pretty powerful. It'd be pretty nice if it didn't have such a god awful DSL.