Honestly, I've never actually written a makefile to compile a C or C++ program. In fact, I haven't written any C of my own since university.
My makefiles are usually just a way to record a data pipeline. Get these files, shove them through these scripts here and those programs there. Launch a web server to show the output.