Ninja is one of the best tools I have used. It is extremely simple and always works flawlessly.
Some blog posts from the creator of ninja:
https://neugierig.org/software/blog/2018/07/options.html
https://neugierig.org/software/blog/2011/04/complexity.html
Also there was a post about why just generating ninja using python can be a good option. I do this in my project and it has been very productive so far. I couldn’t find this post now but it was saying to use ninja_syntax.py from ninja codebase and just doing something minimal for a project
OMG, so many open source projects need to read this:
https://neugierig.org/software/blog/2018/07/options.html
(hello FreeCAD ;)