makefile中伪目标的理解
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中伪目标的理解相关推荐
- Makefile的伪目标
1.Makefile伪目标的格式: .PHONY : cleanclean:rm xxxx 2.Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创建 ...
- 第2天.make的学习(第二部分)对伪目标的理解
一.目标,依赖,命令 也许大家觉得这个不重要,但今天我有了新的认识,所以写了下来.这三个就是Makefile的全部,但今天我要重点说一下它的执行顺序.每个Makefile都有且只有一个终极目标,下设若 ...
- makefile之伪目标(6)
伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签.使用伪目标有两点原因:1. 避免在我们的Makefile ...
- makefile中.PHONY目标的意义
在makefile文件中,会频繁的看到许多".PHONY"目标,例如: .PHONY: build_docker_image build_docker_image:# build ...
- Makefile中指定目标(MAKECMDGOALS)
有一个 make 的环境变量叫"MAKECMDGOALS",这个变量中会存放你所指定的终极目标的列表,如果在命令行上,你没有指定目标,那么,这个变量是空值.这个变量可以让你使 用在 ...
- makefile常见伪目标(.PHONY 不会去检查目标文件)
.PHONY 不会去检查目标文件
- 对makefile中:单冒号普通规则和::双冒号规则的理解 -转
原文地址:对makefile中:单冒号普通规则和::双冒号规则的理解 作者:gliethttp luther: /gliethttp/a.c /gliethttp/b.c /gliethttp2/c. ...
- 【Makefile由浅入深完全学习记录3】伪目标的引入
只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...
- Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
第三部分.书写规则 规则包含两个部分,一个是依赖关系,一个是生成目标的方法.在 Makefile 中,规则的顺序是很重要的,因为,Makefile 中只应该有一个最终目标,其它的目标都是被这个目标所连 ...
- .PHONY makefile中的伪目标
拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean ========= ...
最新文章
- MySQL数据库多种安装方法及企业级安装实践
- Lenovo F41 使用WinXP不能全屏看Flash格式的电影的解决方法
- 模糊数学笔记:六、模糊模型识别-II(择近原则)
- 设计模式之四:适配器模式(Adapter Pattern)
- docker部署Redmine项目管理平台
- 「JupyterNotebook」Jupyter快捷键个人笔记
- (十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍
- 在window.onload中使用setTimeout
- 基于librtmp的推流实现
- Garbled Circuits介绍 - 3 Yao的混淆电路协议
- Android 利用重力感应调整手机模式
- 百度脑图中如果想输入换行符本身(\n)怎么输入
- 程序员养生书单,九本必读养生书籍,颈椎按摩,脊椎按摩,脱发植发
- 一把 LOL 案例,学会模板设计模式!
- AES加密 C++调用Crypto++加密库 例子
- vuecli4关于Warning in ./src/plugins/element.js “export ‘default’ (imported as ‘Vue’) was not found in
- 计算机科学引论2021中文,计算机科学引论(2021英文精编版)
- u盘kali linux淘宝,爱了!3 个受欢迎的 U盘Linux 发行版|Linux 中国
- 流程图的会签、或签、转审、加签、一票否决实现
- Vmware虚拟机的介绍
热门文章
- [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
- WeBack(微信聊天记录导出)使用教程
- 每天CookBook之JavaScript-018
- 【转】我应该直接学Swift还是Objective-C?
- Mosets Tree开发笔记
- mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- Python学习教程:爬虫分析了京东内衣销售记录,哪个size最多?
- java之接口适配器
- 数据结构12: 实践项目之进制转换器
- vmware workstation 不可恢复错误 vcpu-0