Makefile的伪目标
1、Makefile伪目标的格式:
.PHONY : cleanclean:rm xxxx
2、Makefile伪目标的作用:
第一种情况:
如果我们需要书写这样的一个规则:规则所定义的命令不是去创建目标文件,而是通过make命令行明确指定它来执行一些特点的命令,就像例题中的clean。当文件夹中没有clean这个文件的时候,我们输入“make clean”能按照初衷执行,但是一旦文件夹中出现clean文件,我们再次输入“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最新的而不去执行规则所定义的命令。所以rm命令不会被执行。为了解决问题,我们将目标clean定义成伪目标。
clean:rm xxxx
如果同一个目录下有一个clean文件,那么 make clean的动作将不会执行rm动作;
所以,增加.PHONY伪目标的使用的话,就会忽略目录下clean这个文件,直接执行rm动作;
第二种情况:
伪目标的另一种使用场合时在make的并行和递归执行过程中。
SUBDIRS=foo bar bazSubdirs:for dir in $(SUBDIRS)do$(MAKE) –C $$dirdone
如果这样写,会出现几个问题:
1、 当子目录执行make出现错误,make不会退出;
2、 使用这种shell的循环方式时,没有用到make对目录的并行处理功能。
有了伪目标就可以解决上面的两个问题。
SUBDIRS=foo bar baz.PHONY:subdirs $(SUBDIRS)subdirs: $(SUBDIRS)$(SUBDIRS):$(MAKE) –C $@
其中subdirs模板表示要编译多个子目录中的工程。
转载于:https://www.cnblogs.com/linhaostudy/p/7200629.html
Makefile的伪目标相关推荐
- makefile之伪目标(6)
伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签.使用伪目标有两点原因:1. 避免在我们的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 中只应该有一个最终目标,其它的目标都是被这个目标所连 ...
最新文章
- django 中文乱码或不识别
- JFinal 源码导读第八天(1) Db.tx 事物
- Nginx 常见问题解决
- 超级详细的Tcpdump的用法
- formatter java_Java编程中的Java Formatter是什么?
- 网络营销理论模型_网络营销:课堂笔记(第四章下)
- 【VS开发】CString 转为 char *方法大全
- 玩转 SpringBoot2.x 之自定义配置类整合Druid(Mybatis版)
- shell 脚本编程总结
- win环境sftp软件_在Windows上使用sftp工具—WinSCP
- SMT工艺培训一日谈
- 百度万年历API(主要获取节假日和调休工作日数据)
- windows下端口映射(端口转发)
- 查看linux vnc用户名,VNC远程连接Linux
- 如何使用手机裁剪图片大小?
- qt 获取屏幕分辨率
- python点云可视化工具_点云生成鸟瞰图(Python)
- 西门子S7-200SMART控制步进电机(五)
- 回头再说说音乐--江湖笑 周华健
- Word表格中的孤行控制?
热门文章
- 第二十二部分_Hibernate检索策略、拦截器、事务隔离级别
- pptpd免radius限速、限连接+自由定制功能脚本
- 再探Javascript词法作用域
- JAVA删除临时文件
- [HDU] 5444.Elven Postman (堆)
- Socket通信原理
- Springboot@Configuration和@Bean详解
- bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp
- 关于 Bootstrap的知识
- Spring中的注解@Service @Component @Controller @Repository区别