makefile之伪目标(6)
伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签。使用伪目标有两点原因:1. 避免在我们的Makefile中定义的只执行命令的的目标(此目标的目的为了执行执行一系列命令,而不需要创建这个目标)和工作目录下的实际文件出现名字冲突。2. 提高执行make时的效率,特别是对于一个大型的工程来说,编译的效率也许你同样关心。
规则所定义的命令不是去创建目标文件,而是使用make指定具体的目标来执一些特定的命令。像下边那样:
clean:
rm *.o temp
规则中“rm”不是创建文件“clean”的命令,只是删除当前目录下的所有.o文件和temp文件。在工作目录下不存在“clean”这个文件时,我们输入“make clean”后,“rm *.o temp”总会被执行。这是我们的初衷。
但当前工作目录下存在文件“clean”时情况就不一样了,在我们输入“make clean”时。规则没有依赖文件,所以目标被认为是最新的而不去执行规则作定义的命令,命令“rm”将不会被执行。这并不是我们的初衷。为了避免这个问题,我们可以将目标“clean”明确的声明为伪目标。将一个目标声明为伪目标需要将它作为特殊目标.PHONY”的依赖。如下:
.PHONY : clean
这样目标“clean”就是一个伪目标,无论当前目录下是否存在“clean”这个文件。我们输入“make clean”之后。“rm”命令都会被执行。而且,当一个目标被声明为伪目标后,make在执行此规则时不会试图去查找隐含规则来创建这个目标。这样也提高了make的执行效率,同时我们也不用担心由于目标和文件名重名而使我们的期望失败。在书写伪目标规则时,首先需要声明目标是一个伪目标,之后才是伪目标的规则定义。目标“clean”书写格式应该如下:
.PHONY: clean
clean:
rm *.o temp
举例:创建makefile
test:*.o
gcc -o $@ $^
*.o:*.c
gcc -c $<
.PHONY:clean
clean:
rm -f test *.o
makefile之伪目标(6)相关推荐
- Makefile的伪目标
1.Makefile伪目标的格式: .PHONY : cleanclean:rm xxxx 2.Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创建 ...
- makefile常见伪目标(.PHONY 不会去检查目标文件)
.PHONY 不会去检查目标文件
- .PHONY makefile中的伪目标
拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean ========= ...
- 【Makefile由浅入深完全学习记录3】伪目标的引入
只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...
- linux 建立伪目标过程,linux之Makefile 编写、规则、伪目标、变量
什么是Makefile?首先,make是一个工具程序(Utility software),是一种控制编译或者重复编译软件的工具:make可以自动管理软件编译的内容.方式和时机从而使程序员能够把精力集中 ...
- Makefile中.PHONY伪目标的作用(完整)
第一种情况:避免命令与目录下的文件名重复 实际上这个情况很少发生,但网上大部分博客也仅介绍了这一种情况.这里以如下Makefile简单介绍一下: clean:rm -f *.o temp 如果当前目录 ...
- 第2天.make的学习(第二部分)对伪目标的理解
一.目标,依赖,命令 也许大家觉得这个不重要,但今天我有了新的认识,所以写了下来.这三个就是Makefile的全部,但今天我要重点说一下它的执行顺序.每个Makefile都有且只有一个终极目标,下设若 ...
- make: *** 没有规则可制作目标“distclean”。 停止。_Makefile伪目标
这一个章节我们主要讲的是 Makefile 中的伪目标.所谓的伪目标可以这样来理解,它并不会创建目标文件,只是想去执行这个目标下面的命令.伪目标的存在可以帮助我们找到命令并执行.使用伪目标有两点原因: ...
- Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
第三部分.书写规则 规则包含两个部分,一个是依赖关系,一个是生成目标的方法.在 Makefile 中,规则的顺序是很重要的,因为,Makefile 中只应该有一个最终目标,其它的目标都是被这个目标所连 ...
最新文章
- 【SSH三个框架】Hibernate第八部分基础:经营-many关系
- 移动端网页fixed布局问题解决方案
- LSGO软件技术团队2015~2016学年第十七周(1221~1227)总结
- python 面试必问,不会真的要打脸~
- 验1-8 输出倒三角图案 (5 分)
- 力扣-191 位1的个数
- 大数据架构师必读的NoSQL建模技术
- 量化投资与Python
- 深入浅出VMware的组网模式
- Topaz滤镜2018全系列合集Topaz Plugins Bundle
- Ubuntu16.04关机后自动重启解决方案
- OpenCv图像处理之颜色通道分离与多通道融合、图像线性融合
- Day3 函数 参数 变量 递归——python学习之路
- 几何画板用迭代法作图的技巧
- configure: error: C++ preprocessor /lib/cpp fails sanity check
- BootStrap框架模块:BootStrap4实战
- access是用来干什么的_Access是干嘛的,可以用来干什么?
- 网能上但是显示没有连接服务器是怎么回事,宽带网络已连接但没有internet访问是怎么回事...
- 广西大学计算机学院王珏,表白 | 电气学院的学霸男神女神篇
- 学习Python难度高吗?零基础可以学习吗?
热门文章
- C语言的单向链表的操作方法
- cgi硬盘安装器_系统镜像安装CGI备份还原
- (王道408考研操作系统)第四章文件管理-第一节6:文件基本操作
- etc/ld.so.conf文件
- 三维卷积神经网络预测MNIST数字详解
- 将一段区间的偶数分解为两个素数相加(Java)
- bitsadmin命令(Windows下载文件命令)
- DirtyCow漏洞复现(脏牛、大脏牛、Linux、Android、提权)
- Nmap 添加自定义服务指纹
- builtins.TypeError: sequence item 0: expected a bytes-like object, str found