You should unless you've committed to writing portable code. If you're using GCC specific features then using CC would imply a false level of compatibility.
In this case they are using gcc specific features "-MMD -MP -MT".
Make is a great tool. I mostly use it to remember repetitive tasks, like running python tests, not as a build system. Works even better for this. What annoys me deeply is that gnu make isn’t available on windows, e.g git bash.
I really don't know the first thing about C or makefiles o anything related, but I was browsing the code out of general curiosity and I have a question.
Would this code benefit from better variable names or is it just that I don't know the domain and this is good understandable code? I'm honestly curious.
I think that most code benefits from better variable names. For ease of typing and for historical reasons, abbreviated variable names are in the C and makefile domain:
BIN = BINary executable
SRCS = SouRCe fileS
OBJS = OBJect fileS
DEPS = DEPendency fileS
CFLAGS = C compiler FLAGS passed as arguments to the C compiler
LDFLAGS = linker or Link eDitor FLAGS passed as arguments to the linker
I would say that the variable naming in the linked Makefile follows the usual conventions. Sure it could benefit - but at the cost of confusing readers who are accustomed to those conventions.
For lots of things, and especially if you stick to the Unix Philosophy or Suckless Philosophy, this Makefile is all you need. I personally add ‘install’, ‘uninstall’, ‘clean’, and ‘superclean’ targets to my projects but this is a really great start.
I understand there's lots of build systems out there with better scripting languages, but is there anything else that can challenge make for simplicity and portability (although I guess you could export Makefiles)?
Unfortunately, the reality is never as simple as that. Your makefile will grow like a tumour once your project grows: Specific dependencies, OS and compiler related flags and switches, special folder structures, etc etc.
Your makefile will then work on systems without gcc, and it is also easier to override it, ie: