初学makefile的时候,有一个关键字“.PHONY”搞不懂,在请教过同学之后豁然开朗,遂写下经验望帮助更多的同学能够理解。
在某度可以搜到phony的英文意思是:骗人的东西
那么,在Makefile中,.PHONY后面的target表示的也是一个伪造的target, 而不是真实存在的文件target,注意Makefile的target默认是文件。
例如:
先创建两个makefile文件
Makefile1和Makefile2的差别就是在Makefile2中定义了:
.PHONY: clear
直接make看看
Makefile1和Makefile2的行为没有什么区别。
再创建一个clear文件,make看看
区别来了,Makefile1拒绝了执行clear, 因为文件clear存在。而Makefile2却不理会文件clear的存在,总是执行clear后面的规则。由此可见,.PHONY clear起到“欺骗”的作用,欺骗make别管别的,让你干嘛你就干嘛的意思。