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

.PHONY: build_docker_image
build_docker_image:# build dockerfile from stdin so that we don't send the build-context; source is bind-mounted in the development environmentcat ./dockerfiles/Dockerfile.dev | docker build ${DOCKER_BUILD_ARGS} -t $(DEV_DOCKER_IMAGE_NAME) -

PHONY的意思是“虚假的、赝品”。在makefile中,.PHONY是对其后的目标的一个说明,说明目标并不一定是一个真正的文件,不要将其当做makefile管理的文件来处理。因此如果要构建此目标,必须执行目标构建的命令,而不检查依赖文件修改时间等因素来确定命令是否执行。

https://www.cnblogs.com/idorax/p/9306528.html和https://www.cnblogs.com/yuanqiangfei/p/8058369.html中介绍了两种.PHONY目标的典型使用场景。分别是:

  • 目标其实只是一个操作,例如clean,但是目录下却存在同名的文件。这时使用.PHONY表示目标不是文件,必须执行命令。
  • 目标确实是一个文件,但是目标文件的构建很复杂,其构建是通过其他方式完成的,在当前makefile中没有包含其完整的依赖关系和构建方式。默认方式下makefile检查依赖后可能不执行目标的构建命令。这时使用.PHONY表示目标不是当前makefile直接构建的,不要通过检查依赖来决定是否执行命令,必须执行其构建命令来完成构建。

需要注意的是虽然.PHONY目标不通过依赖来决定目标是否要执行命令,但是还是会检查依赖的,依赖目标不存在时仍然会尝试构建或报错。

总结一下:.PHONY目标一定会执行构建命令。一般用于目标非实体文件,或目标文件不受makefile管理、依赖关系不完整的情况。

makefile中.PHONY目标的意义相关推荐

  1. makefile中.PHONY的最直接理解

    makefile中.PHONY的最直接理解 为了避免和文件重名的这种情况,可以使用一个特殊的标记".PHONY"来显示地指明一个目标是"伪目标",向make说明 ...

  2. makefile中.PHONY的作用是什么?

    makefile中.PHONY的作用是什么?   初学makefile的时候,有一个关键字".PHONY"搞不懂,在请教过同学之后豁然开朗,遂写下经验望帮助更多的同学能够理解. 在 ...

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

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

  4. Makefile中.PHONY的作用

    单词phony (即phoney)的意思是:伪造的,假的.来自collins的解释是: If you describe something as phoney, you disapprove of i ...

  5. Makefile中.PHONY的含义

    目录标题 含义 作用 说明 含义 单词phony (即phoney)的意思是:伪造的,假的. 在Makefile中, .PHONY后面的target表示的也是一个伪造的target, 而不是真实存在的 ...

  6. Makefile中指定目标(MAKECMDGOALS)

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

  7. makefile 中的.PHONY

    makefile 中.PHONY  的理解 make xxx.   是否执行xxx 这个target 对应的规则. 取决于这个target 是否存在, 以及生成这个target 的input file ...

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

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

  9. .PHONY makefile中的伪目标

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

最新文章

  1. 第三方支付接口的技术比较研究
  2. GIS软件开发工具包TatukGIS Developer Kernel 发布 v11.3.0-Unstable1丨附下载
  3. [BZOJ4894]天赋
  4. go split 正则_WEGO使用—华大基因在线GO功能注释
  5. abap性能优化——利用凭证的number ranger提高abap程序性能
  6. 微信支付退款回调处理 php
  7. weka和matlab完成完整分类实验
  8. 数据湖,当然得要全闪存的!
  9. 抽象类的成员特点 学习笔记
  10. java如何构建图_如何从传递边构建子图?
  11. 笔记——Transformer
  12. Zuul 代理文件上传、为路由提供 hystrix 回退、过滤器、超时时间
  13. 管理感悟:要想到自己脖子后面有灰
  14. 单片机基础——C语言
  15. html 设置origin,background-origin属性怎么用
  16. 你的优势在哪?开宝马的学渣教会我的事
  17. 激光雷达与组合导航标定
  18. 研究生阶段记录3-PCR介绍
  19. 中南大学计算机大一学什么时候发,中南大学计算机学院2019年夏令营
  20. 【PTA 7-9】剥洋葱

热门文章

  1. 泰山学院数据库选择答案
  2. LeetCode 15. 三数之和【双指针】
  3. 基础语法篇_8——MFC:如何在对话框程序中让对话框捕获WM_KEYDOWN消息
  4. Hive之grouping sets用法详解
  5. 计算机网络的七层框架
  6. CAN总线的终端电阻选择
  7. 用Python求两条线段的交点,包括延长线的交点
  8. 外卖打印机语音芯片ic设计方案【九芯电子】
  9. 分页PageInfo和IPage的使用
  10. UWB定位傲视厘米级精度领域