## .PHONY
* `.PHONY` 用于指定一个假想的工作目标,如`.PHONY:clean`中clean并不是一个实际存在的文件,并且会一直被设为未更新的,即每次执行的时候不会去查看其依赖是否更新,而是直接执行,如:
```makefile
.PHONY:install
install:foo
install -m 644 foo /usr/bin
.PHONY:clean
clean:
rm *.o a.out
```
* 好处:
1. 避免和同名文件冲突,如文件中包含clean这个文件,那么clean因为没有依赖,一直都是最新的,执行`make clean`时什么都不会做
2. 改善make的性能,跳过隐含规则的搜索