I only use makefiles. Make is versatile and powerful. And it's like everything else, once you've written makefiles for a few different projects with the structure and features that you want, you can reuse them as templates for other projects, only modifying a few things here and there. It's a bit bizarre to hear people talk about it as though they had to write each of their makefiles from scratch every time, thus spending a lot of time. It doesn't make sense. Once you have covered your bases, it's a matter of a couple minutes for every new makefile - nothing longer than when using CMake. But, you have this initial time investment.
Apart from the syntax, that you get used to pretty quickly, Make is a decent tool.
Most of the criticism (again apart from syntax) I've heard is about dependency handling. Make itself can follow any dependencies you define, but it can't create them on its own (or only in very limited ways), and it's seemingly one of the main reasons new build tools are designed and used. So, if you build C or C++ code, you usually use the compiler to generate dependencies, GCC for instance have had options to generate Make dependencies for a very long time. For other compilers, that may vary. And, it's always an extra step you need to handle in your makefiles. Again, once you have set up a few makefiles covering your common use cases, it's mostly just a matter of reusing them. But the process may look clunky to many people, and generating dependencies for some other languages can require writing your own tools, which is admittedly not that convenient. And, even for C and C++, generating dependencies using the compiler, while straightforward and fully automatable, can take a pretty long extra time if you deal with big projects. This step is not very optimized.
That is one of the reasons most of these tools are front-ends to Make (or, alternatively, ninja.) Dependencies.
I personally do not use CMake unless I'm forced to, but if you find it useful, go for it. Ultimately it's whatever is most convenient and productive for your use case.