您的位置:首页 > 运维架构 > Linux

Linux之Makefile(.PHONY)

2014-12-05 17:15 267 查看
clean:

rm *.o temp

规则中“rm”不是创建文件“clean”的命令,而是删除当前目录下的所有.o文件和 temp

文件。当工作目录下不存在“clean”这个文件时,我们输入“make clean”,“rm *.o

temp”总会被执行。这是我们的初衷。

但是如果在当前工作目录下存在文件“clean” ,情况就不一样了,同样我们输入

“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最新的而不去执

行规则所定义的命令,因此命令“rm”将不会被执行。这并不是我们的初衷。为了解

决这个问题,我们需要将目标“clean”声明为伪目标。将一个目标声明为伪目标的方

这样目标“clean”就被声明为一个伪目标,无论在当前目录下是否存在“clean”这个

文件。我们输入“make clean”之后。“rm”命令都会被执行。而且,当一个目标被声

明为伪目标后,make在执行此规则时不会去试图去查找隐含规则来创建它。这样也提

高了 make的执行效率,同时也不用担心由于目标和文件名重名而使我们的期望失败。

在书写伪目标规则时,首先需要声明目标是一个伪目标,之后才是伪目标的规则定义。

目标“clean”的完整书写格式应该如下:

.PHONY: clean

clean:

rm *.o temp

法是将它作为特殊目标.PHONY”的依赖。如下:

.PHONY : clean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: