参考 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