Makefile文件由一系列规则(rules)构成。
其中每条规则的形式如下。
<target> : <prerequisites>
[tab] <commands>
可以称 <target> 为目标
目标可以是文件名,即这条规则执行后生成的文件名;
目标也可以是操作名,即给这条规则取一个名字,此时这个操作名称为伪目标。
clean:
rm *.o
这条规则中的目标“clean”不是一个文件名,而是一个操作名,属于伪目标(phony target)。这条规则的作用是删除所有目标文件。
使用伪目标的一个问题是:若Makefile文件所在的目录中有一个文件叫做clean,则该规则会失效,不会执行(make会认为clean文件已经存在,没必要执行的必要) 。如图:
此时就需要用 .PHONY对该伪目标进行声明