- 总是能在 Makefile 里面看到好多目标的依赖列表中包含一个
FORCE
,如:
vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
FORCE
是一个伪目标,一般是像下面这样定义的
PHONY +=FORCE
FORCE:
# Declare the contents of the .PHONY variable as phony. We keep that
# information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY)
由上面的定义可知,FORCE
是个伪目标,它的规则没有依赖没有命令。
如果一个规则里没有依赖也没有命令,并且它的目标不是已存在的文件名,那么每次执行这条规则时,make就认为这个目标被更新,该目标就被视为最新的。
在第一个代码块中,FORCE
做为依赖每次遇到都被认为是最新的,因此目标 vmlinux
也是每次都要被更新(即它的命令必执行,目标必须要比它的依赖还要 " 新 " )