1. 我们知道Makefile中的语法是这样:

target ... : prerequisites ...
command

2. 假如编译两个文件可以这么写:

a.o:a.c  gcc -c a.c b.o:b.c  gcc -c b.c Test: a.o b.o   gcc -o Test a.o b.oclean:  rm *.o

我们可以单独这么运行:
make a.o
或者
make b.o
或者
make clean
注意上面三个的区别。前两个都会生成目标,而第三个不会生成目标,仅仅希望执行所在规则(clean)定义的命令(rm)。
这个时候就需要伪目标出马了:目的不是为了生成目标,仅仅是希望执行其所在规则定义后面的命令

3. 伪目标定义

a.o:a.c  gcc -c a.cb.o:b.c  gcc -c b.cTest: a.o b.o  gcc -o Test a.o b.o.PHONY:cleanclean:  rm *.o

就像上面这样,多一个 .PHONY声明,那么clean就是伪目标了


4. 为什么要使用伪目标:
1)避免在我们的Makefile中定义的只执行命令的目标和工作目录下实际文件名字出现冲突。(比如,假如当前目录有一个clean文件,那么上面的 make clean 就不能达到我们的预期了)
2)提高执行效率,被声明为伪目标后,make在执行此规则时不会视图去查找隐含规则来创建这个目标。

makefile中伪目标的理解相关推荐

  1. Makefile的伪目标

    1.Makefile伪目标的格式: .PHONY : cleanclean:rm xxxx 2.Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创建 ...

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

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

  3. makefile之伪目标(6)

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

  4. makefile中.PHONY目标的意义

    在makefile文件中,会频繁的看到许多".PHONY"目标,例如: .PHONY: build_docker_image build_docker_image:# build ...

  5. Makefile中指定目标(MAKECMDGOALS)

    有一个 make 的环境变量叫"MAKECMDGOALS",这个变量中会存放你所指定的终极目标的列表,如果在命令行上,你没有指定目标,那么,这个变量是空值.这个变量可以让你使 用在 ...

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

    .PHONY 不会去检查目标文件

  7. 对makefile中:单冒号普通规则和::双冒号规则的理解 -转

    原文地址:对makefile中:单冒号普通规则和::双冒号规则的理解 作者:gliethttp luther: /gliethttp/a.c /gliethttp/b.c /gliethttp2/c. ...

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

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

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

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

  10. .PHONY makefile中的伪目标

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

最新文章

  1. MySQL数据库多种安装方法及企业级安装实践
  2. Lenovo F41 使用WinXP不能全屏看Flash格式的电影的解决方法
  3. 模糊数学笔记:六、模糊模型识别-II(择近原则)
  4. 设计模式之四:适配器模式(Adapter Pattern)
  5. docker部署Redmine项目管理平台
  6. 「JupyterNotebook」Jupyter快捷键个人笔记
  7. (十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍
  8. 在window.onload中使用setTimeout
  9. 基于librtmp的推流实现
  10. Garbled Circuits介绍 - 3 Yao的混淆电路协议
  11. Android 利用重力感应调整手机模式
  12. 百度脑图中如果想输入换行符本身(\n)怎么输入
  13. 程序员养生书单,九本必读养生书籍,颈椎按摩,脊椎按摩,脱发植发
  14. 一把 LOL 案例,学会模板设计模式!
  15. AES加密 C++调用Crypto++加密库 例子
  16. vuecli4关于Warning in ./src/plugins/element.js “export ‘default’ (imported as ‘Vue’) was not found in
  17. 计算机科学引论2021中文,计算机科学引论(2021英文精编版)
  18. u盘kali linux淘宝,爱了!3 个受欢迎的 U盘Linux 发行版|Linux 中国
  19. 流程图的会签、或签、转审、加签、一票否决实现
  20. Vmware虚拟机的介绍

热门文章

  1. [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
  2. WeBack(微信聊天记录导出)使用教程
  3. 每天CookBook之JavaScript-018
  4. 【转】我应该直接学Swift还是Objective-C?
  5. Mosets Tree开发笔记
  6. mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  7. Python学习教程:爬虫分析了京东内衣销售记录,哪个size最多?
  8. java之接口适配器
  9. 数据结构12: 实践项目之进制转换器
  10. vmware workstation 不可恢复错误 vcpu-0