在Makefile中的 .PHONY 是做什么的?
假设你的一个项目最后需要产生两个可执行文件。你的主要目标 是产生两个可执行文件,但这两个文件是相互独立的——如果一 个文件需要重建,并不影响另一个。你可以使用“假象目的”来 达到这种效果。一个假象目的跟一个正常的目的几乎是一样的, 只是这个目的文件是不存在的。因此, make 总是会假设它需要 被生成,当把它的依赖文件更新后,就会执行它的规则里的命令 行。
如果在我们的 makefile 开始处输入:
all : exec1 exec2
其中 exec1 和 exec2 是我们做为目的的两个可执行文件。 make 把这个 'all ' 做为它的主要目的,每次执行时都会尝试把 'all ' 更新。但既然这行规则里没有哪个命令来作用在一个叫 'all ' 的 实际文件(事实上 all 并不会在磁碟上实际产生),所以这个规 则并不真的改变 'all ' 的状态。可既然这个文件并不存在,所以 make 会尝试更新 all 规则,因此就检查它的依靠 exec1, exec2 是否需要更新,如果需要,就把它们更新,从而达到我们的目的。
假象目的也可以用来描述一组非预设的动作。例如,你想把所有由 make 产生的文件删除,你可以在 makefile 里设立这样一个规则:
veryclean :
rm *.o
rm myprog
前提是没有其它的规则依靠这个 'veryclean ' 目的,它将永远 不会被执行。但是,如果你明确的使用命令 'make veryclean ' , make 会把这个目的做为它的主要目标,执行那些 rm 命令。
如果你的磁碟上存在一个叫 veryclean 文件,会发生什么事?这 时因为在这个规则里没有任何依靠文件,所以这个目的文件一定是 最新的了(所有的依靠文件都已经是最新的了),所以既使用户明 确命令 make 重新产生它,也不会有任何事情发生。解决方法是标 明所有的假象目的(用 .PHONY),这就告诉 make 不用检查它们 是否存在于磁碟上,也不用查找任何隐含规则,直接假设指定的目 的需要被更新。在 makefile 里加入下面这行包含上面规则的规则:
.PHONY : veryclean
就可以了。注意,这是一个特殊的 make 规则,make 知道 .PHONY 是一个特殊目的,当然你可以在它的依靠里加入你想用的任何假象 目的,而 make 知道它们都是假象目的。
转载于:https://www.cnblogs.com/yuzaipiaofei/archive/2011/07/21/4124519.html
在Makefile中的 .PHONY 是做什么的?相关推荐
- makefile 中的.PHONY
makefile 中.PHONY 的理解 make xxx. 是否执行xxx 这个target 对应的规则. 取决于这个target 是否存在, 以及生成这个target 的input file ...
- makefile中的.PHONY和all的作用
.PHONY(伪目标) 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行所在规则定义的命令,有时也可以将一个伪目标称为标签.伪目标通过PHONY来指明. PHON ...
- 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别
笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...
- Makefile中.PHONY的作用
单词phony (即phoney)的意思是:伪造的,假的.来自collins的解释是: If you describe something as phoney, you disapprove of i ...
- 【Makefile】Makefile文件中的 .PHONY 的作用
目录 即看即用 详细说明 即看即用 作用:告诉make,.PHONY:后面跟着的名称不是指文件名,如果makefile中xxxx 写在.PHONY:后面,那么make xxxx 就表示执行xxxx ...
- makefile中的all和.PHONY的作用
请编写一个makefile同时编译.链接下面两个程序: main1.c: #include int main(void) { printf("main1\n"); } main2. ...
- makefile中.PHONY目标的意义
在makefile文件中,会频繁的看到许多".PHONY"目标,例如: .PHONY: build_docker_image build_docker_image:# build ...
- makefile中.PHONY的作用是什么?
makefile中.PHONY的作用是什么? 初学makefile的时候,有一个关键字".PHONY"搞不懂,在请教过同学之后豁然开朗,遂写下经验望帮助更多的同学能够理解. 在 ...
- Makefile中.PHONY的含义
目录标题 含义 作用 说明 含义 单词phony (即phoney)的意思是:伪造的,假的. 在Makefile中, .PHONY后面的target表示的也是一个伪造的target, 而不是真实存在的 ...
最新文章
- 十张图解释机器学习的基本概念
- mysql默认排序规则_mysql 字符集与排序规则的简单了解
- 曼彻斯特解密_曼彻斯特编码解码方法与流程
- 在.net中加载dll的一种错误问题原因及处理
- android+清除循环动画,android - 如何使用ViewPropertyAnimator生成循环动画?
- C++自定义异常处理
- Java异常统一处理
- 10个最好的 Node.js MVC 框架
- postman测试websocket_还在手工写接口测试文档,已经out了
- SVD在推荐系统中的应用【推荐】
- php 重定义数组k,PHP基础篇之数组
- MySQL参数max_connect_errors分析释疑
- gitLab数据备份和迁移
- mysql preparing状态_mysql stage preparing,help!!!
- html5播放加速,html5倍速播放插件
- 【操作系统】操作系统
- html视频怎么转换成图片,如何将小视频转换成GIF动图或将GIF动图转换成视频
- RabbitMQ内存消耗
- SoundHound与本田合作,加速开发AI语音助手
- FTP协议及工作原理详解