在前端验证环境中,makefile是很关键的文件。在执行makefile命令时,经常看到命令被.PHONY修饰,那么.PHONY的作用是什么?
举例:
在上面的makefile文件里,dir/cmp/ncrun/run都是目标。目标在makefile里分为两种:一种是目标文件,一种是目标命令。当我们的目的是要调用命令而不是文件时,就需要使用.PHONY将这些目标命令设置为伪目标。
那设置成伪目标的好处是什么呢?
makefile有一条规则是:当依赖有更新或者目标不存在时,才会去执行目标下面的动作。
那么设想一种情况:如果当前makefile文件同级目录下有与dir/cmp/ncrun/run同名的文件时,会发生什么情况呢?根据makefile的规则,它发现目标是存在的,所以此时就不会执行目标下面的动作了,这与我们的预期不符。因此,才需要将这些目标命令设置为伪目标,保证每次调用命令时命令都能够执行。