8.1 伪目标
伪目标不代表真正的文件名,执行make时可以指定这个目标来执行其所在规则定义的命令
为了便于对已经编译好的工程进行清理,安装等,我们一般会在Makefile文件中定义如下:
clean:
$(RM) *.o target
然后通过make命令显示地执行:make clean
由于我们并不生成clean这个文件,clean只是一个标签,make无法生成它的依赖关系和决定它是否要执行,所有要通过make命令显示地执行这个目标:make clean
但是如果Makefile当前目录下有一个和clean目标同名的文件clean,那么这么写就会有问题,因为clean文件永远是最新的,所以clean目标的命令永远得不到执行,为了解决这个问题,Makefile提供了伪目标这个功能,所以新的清除命令可以写成下面这样:
.PHONY : clean
clean :
$(RM) *.o target
只要有这个声明,不管是否有clean文件,make clean都会得到执行,make在执行此规则时不会去试图查找隐含规则来创建它,这样也提高了make的最新效率
8.2 实现并行处理
利用