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
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
相关文章推荐
- linux Makefile PHONY作用
- Linux下Makefile的automake生成全攻略
- 关于Linux版本的Makefile改趁VC++版本的MakeFile!
- Linux/Unix环境下的make和makefile详解
- Linux下Makefile的automake生成全攻略
- Linux下用automake生成makefile
- linux编程_Makefile文件
- Linux下Makefile的automake生成全攻略
- [转贴]Linux下Makefile的automake生成全攻略[-]
- [转贴]Linux下Makefile的automake生成全攻略[三]
- Linux下Makefile的automake生成全攻略
- linux基础之Makefile
- Linux/Unix环境下的make和makefile详解
- Linux/Unix环境下的Make和Makefile详解
- Linux/Unix环境下的make和makefile详解(zz)
- Linux下Makefile的automake生成全攻略
- Linux下Makefile的automake生成全攻略
- linux编程_Makefile文件
- Linux里使用ACE时的makefile
- Linux下Makefile的automake生成全攻略