phony 详解



phony 详解




1: 一个目标,可以产生target文件,也可以不产生target文件


echo目标就不产生echo文件
不产生文件,则每次make echo。都将执行recipe。
因为make总是妄图产生一个比temp更新的target--echo文件。
echo: temp
@echo "$(shell ls -l temp)"

2:一个目标,可以有依赖,也可以没有依赖。


clean目标,就没有依赖。
没有依赖,有2种情况。
一个是target是个文件,则target永远是最新的。target的recipe永远不会被执行。(参见3)
一个是target不能被make生成,则target的recipe永远要执行。(参见1)


clean就是一个没有文件的taget,则make clean需要每次执行recipe。
clean:
rm *.o


如果目录下面,恰好有个文件叫做clean
则clean永远是最新的。make clean每次都不会执行任何动作。


3: 为防止target和目录下面文件重名,则引入.PHONY: 就是让目标永远执行。


PHONY的意义就是,这个目标对应的文件是不需要生成的。只是为了执行一组动作。

就算有和target重名的文件,也忽略不管。


4: 改善性能


已知phony 目标并非是由其它文件生成的实际文件,make 会跳过隐含规则搜索。这就是声明phony 目标会改善性能的原因,即使你并不担心实际文件存在与否。

也就是说对于phony目标,make会乖乖的执行recipe,不会去管隐含规则那一套。因为它知道,对于phony目标。目的就是为了执行recipe. 不是妄图产生什么文件,或者中间文件。


5: PHONY使用2个必要条件


target没有依赖

target不生成对应的文件


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值