timz parent
I see where you are coming from for C/C++ based projects, but for more higher level ones, this is being taken care of by the compilers themselves.
I use Makefiles all the time for dependency management, not necessarily for compiling code. For example, in a data analysis workflow, I’ll use a make file to manage the processing from ETL, extracting out whatever data I need, and finally, generating a figure. Whenever one step in the process is updated, the rest are automatically also run.
It’s not just for C!
(Although, it’s mainly used for C)