PHONY
.PHONY :clean
clean:
rm -rf a.out
makfile
经常会看到.PHONY
的命令。.PHONY
的作用是什么
1首先要知道makefile
中除了一些常量的声明外,剩下的指令基本都是以
下面的形式开始
targetfile:sourcefile
command1 targetfile sourcefile
command2 targetfile sourcefile
command3 targetfile sourcefile
比如下面的
clean:
rm -rf a.out
//make清除生成的文件
以及
hello:1.o 2.o
gcc -o hello 1.o 2.o
2 有的命令不存在targetfile
make
只会当sourcefile
发生改动,即targetfile
不是最新的时候才会执行下面的命令,但是有时我们的命令不存在targetfile
,即
clean:
rm -rf a.out
我们目录下一般情况下其实是没有clean
文件(注意我说的是一般
3 假如clean
文件真的存在
clean
不是targetfile
,当你的目录下不存在clean
文件的时候,没有.PHONY
其实也不会发生错误,但是当你的项目目录下确实存在clean
文件时候,当你执行make clean
时候,make
会告诉你你的clean
文件已经是最新的了,这个时候不会执行make clean
命令
4 .PHONY
就是为了解决上面的冲突
.PHONY
本意是假的
.PHONY clean
意思是在目录下假设有一个假的永远是旧的clean
文件,这样即使你的文件目录下确实存在clean
文件,执行make clean
也会执行。
5 总结
所以.PHONY
的作用是解决文件名称的冲突
其实.PHONY
还能提高性能,具体为什么大家自己Google