phony 目标表示该目标不是真的文件(注:make 目标默认是文件);而是在make时候执行name命名的一条规则。
使用phony目标有两个原因:避免规则和文件名冲突,和提高性能。
举例:
clean:
rm *.o temp
如果该目录不存在clean文件,make clean每次都能成功,但如果该目录有个clean文件,则该条规则不会被执行。要解决该问题就需要使用phony。
.PHONY: clean
clean:
rm *.o temp
改成这样后不管该目录是否存在clean文件,make clean每次都会执行这条规则。