博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile中 的 phony target,empty target
阅读量:5997 次
发布时间:2019-06-20

本文共 1131 字,大约阅读时间需要 3 分钟。

phony target

Makefile的语法很简单

:
[tab]

目标、先决条件、命令 构成了Makefile的全部规则

一般而言,说到目标总给人一种非要产生么东西出来的感觉,如果带着这种感觉理解phony target(伪目标)可能有些吃力。更好的一种理解是将phony target理解成一个动作,动作的特点是不一定非得产生么东西出来,但是会执行一些操作。Makefile中的phony target就是这样一个特殊target ,使用.PHONY将一个(或一些)target指定为phony target,这样可以确保phony target对应的commands无论如何都会被执行。phony target参考

empty target

empty target在行为上很像 phony target,可以视为phony target的一种变体。empty target通常用于保存某个动作的一组方法,你可以在任何地方任何时候显式执行这个动作。不像phony target,empty target对应的文件可以实际存在,文件的内容是啥没关系,通常是空的。empty target的目的是当commands的最后一条命令执行完后更新empty target的最后修改时间(last-modification time)。这通常是靠touch来实现的,代码如下

print: foo.c bar.c        lpr -p $?        touch print

empty target应该有prerequisites ,否则的话emoty target存在也没啥意义。当你执行make XXX的时候,XXX是empty target,如果prerequisites 任何文件新于empty target,则empty target对应的commands就会执行,并在最后更新empty target时间。按照上面代码来讲,也就是说自你上次make empty_target后,prerequisites 中任何文件有变化,再次make empty_target就会把哪些变化的文件打印出来,$?用于表示哪些变化的文件。更多参考

phony target的替代方案

参考:

某些版本或者某些平台的make可能不支持.PHONY,这时候可以采取如下替代方案

clean: FORCE        rm $(objects)FORCE:

 

 

 

转载于:https://www.cnblogs.com/kelamoyujuzhen/p/9465552.html

你可能感兴趣的文章
洛谷P2057 【SHOI2007】善意的投票
查看>>
我的工作問題集(VS2005)
查看>>
node.js 开发环境配置 和使用方式
查看>>
对kinderEditor 的空内容进行验证
查看>>
Inside SharePoint 2010 (4): Sandboxed Solutions
查看>>
A + B
查看>>
jenkins配置及使用中出现的问题
查看>>
json数据
查看>>
快手2面
查看>>
数据结构概述
查看>>
拦截Response.Redirect的跳转并转换为Js的跳转
查看>>
「UVA1185」Big Number 解题报告
查看>>
"The media set has 2 media families but only 1 are provided" Error
查看>>
eclipse使用快捷键
查看>>
性能测试中使用tesseract-ocr工具来识别验证码的一些想法
查看>>
人工智能和机器学习领域的一些有趣的开源项目
查看>>
述一个程序员的技能:系统安装(win7版)idea配置
查看>>
FPGA中latency与delay概念的区别
查看>>
python3.6内置模块——random详解
查看>>
Python 实现双端队列 Deque
查看>>