参考 4.9 Special Built-in Target Names。
.DEFAULT
如果目标的某个先决条件(prerequisites)没有定义任何规则,那么.DEFAULT指定的规则将会被执行。参见 Implicit Rule Search Algorithm。
.DEFAULT:
@echo default
test: force
@echo test
test2:
@echo test2
其中,test 的先决条件 force 不是任何一条规则的目标,所以 .DEFAULT 规则将被执行:
$ make test
default
test
$ make test2
test2
如果定义了 force 的规则(即使是空规则),那么 .DEFAULT 的规则也不会被执行:
.DEFAULT:
@echo default
test: force
@echo test
force:
测试:
$ make test
test
当Makefile中的目标依赖项没有定义规则时,默认规则.DEFAULT会被执行。例如,test依赖于force,而force无规则,所以.DEFAULT规则运行。但如果为force定义了规则,即使为空,.DEFAULT也将不会执行。

1021

被折叠的 条评论
为什么被折叠?



