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的伪目标相关推荐

  1. makefile之伪目标(6)

    伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签.使用伪目标有两点原因:1. 避免在我们的Makefile ...

  2. makefile常见伪目标(.PHONY 不会去检查目标文件)

    .PHONY 不会去检查目标文件

  3. .PHONY makefile中的伪目标

    拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean ========= ...

  4. 【Makefile由浅入深完全学习记录3】伪目标的引入

    只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...

  5. linux 建立伪目标过程,linux之Makefile 编写、规则、伪目标、变量

    什么是Makefile?首先,make是一个工具程序(Utility software),是一种控制编译或者重复编译软件的工具:make可以自动管理软件编译的内容.方式和时机从而使程序员能够把精力集中 ...

  6. Makefile中.PHONY伪目标的作用(完整)

    第一种情况:避免命令与目录下的文件名重复 实际上这个情况很少发生,但网上大部分博客也仅介绍了这一种情况.这里以如下Makefile简单介绍一下: clean:rm -f *.o temp 如果当前目录 ...

  7. 第2天.make的学习(第二部分)对伪目标的理解

    一.目标,依赖,命令 也许大家觉得这个不重要,但今天我有了新的认识,所以写了下来.这三个就是Makefile的全部,但今天我要重点说一下它的执行顺序.每个Makefile都有且只有一个终极目标,下设若 ...

  8. make: *** 没有规则可制作目标“distclean”。 停止。_Makefile伪目标

    这一个章节我们主要讲的是 Makefile 中的伪目标.所谓的伪目标可以这样来理解,它并不会创建目标文件,只是想去执行这个目标下面的命令.伪目标的存在可以帮助我们找到命令并执行.使用伪目标有两点原因: ...

  9. Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)

    第三部分.书写规则 规则包含两个部分,一个是依赖关系,一个是生成目标的方法.在 Makefile 中,规则的顺序是很重要的,因为,Makefile 中只应该有一个最终目标,其它的目标都是被这个目标所连 ...

最新文章

  1. django 中文乱码或不识别
  2. JFinal 源码导读第八天(1) Db.tx 事物
  3. Nginx 常见问题解决
  4. 超级详细的Tcpdump的用法
  5. formatter java_Java编程中的Java Formatter是什么?
  6. 网络营销理论模型_网络营销:课堂笔记(第四章下)
  7. 【VS开发】CString 转为 char *方法大全
  8. 玩转 SpringBoot2.x 之自定义配置类整合Druid(Mybatis版)
  9. shell 脚本编程总结
  10. win环境sftp软件_在Windows上使用sftp工具—WinSCP
  11. SMT工艺培训一日谈
  12. 百度万年历API(主要获取节假日和调休工作日数据)
  13. windows下端口映射(端口转发)
  14. 查看linux vnc用户名,VNC远程连接Linux
  15. 如何使用手机裁剪图片大小?
  16. qt 获取屏幕分辨率
  17. python点云可视化工具_点云生成鸟瞰图(Python)
  18. 西门子S7-200SMART控制步进电机(五)
  19. 回头再说说音乐--江湖笑 周华健
  20. Word表格中的孤行控制?

热门文章

  1. 第二十二部分_Hibernate检索策略、拦截器、事务隔离级别
  2. pptpd免radius限速、限连接+自由定制功能脚本
  3. 再探Javascript词法作用域
  4. JAVA删除临时文件
  5. [HDU] 5444.Elven Postman (堆)
  6. Socket通信原理
  7. Springboot@Configuration和@Bean详解
  8. bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp
  9. 关于 Bootstrap的知识
  10. Spring中的注解@Service @Component @Controller @Repository区别