答案1
Make 使用它的内置规则。它们特别告诉它如何编译 C 代码以及如何链接单对象程序。
实际上你甚至不需要 Makefile:
make test
没有一个就可以工作。
要查看使这一切成为可能的隐藏规则,请使用-p
不带 Makefile 的选项:
make -p -f /dev/null
该-r
选项禁用这些内置规则。
正如所指出的阿莱夫泽罗, Make 已经有很长一段时间的内置规则了(如果不是总是如此的话); Stuart Feldman 在 Unix V7 中的第一个版本将它们定义在files.c
, 和他 1979 年的论文提到他们。他们也是POSIX规范。 (这并不意味着 Make 的所有实现都支持它们 — 旧的 Borland Make for DOS 不支持,至少 3.0 版之前不支持。)