大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
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不生成对应的文件
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215557.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...