I think the reason make is both so controversial and also long-lived is that despite how everyone thinks of it, it isn't really a build tool. It actually doesn't know anything at all about how to build C, C++, or any other kind of code. (I know this is obvious to those of us that know make, but I often get the impression that a lot of people think of make as gradle or maven for C, which it really isn't.) It's really…
I guess it depends on how you define "know", but there are implicit rules.
$ cat foo.c
#include
int main() {
printf("Hello\n");
return 0;
}
$ cat Makefile
foo: foo.c
$ make
cc -O2 -pipe foo.c -o foo
$ ./foo
Hello