博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile 假想目标:.PHONY
阅读量:1816 次
发布时间:2019-04-25

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

假想目标: .PHONY

test: a.o b.o c.o	gcc -o test $^%.o : %.c	gcc -c -o $@ $

1.我们想清除文件,我们在Makefile的结尾添加如下代码就可以了:

clean:	rm *.o test

1).执行make:生成第一个可执行文件。

2).执行make clean: 清除所有文件,即执行:rm *.o test。

make后面可以带上目标名,也可以不带,如果不带目标名的话它就想生成第一个规则里面的第一个目标。

2.使用Makefile

执行:make [目标]

也可以不跟目标名,若无目标默认第一个目标。我们直接执行make的时候,会在makefile里面找到第一个目标然后执行下面的指令生成第一个目标。当我们执行make clean的时候,就会在Makefile里面找到clean这个目标,然后执行里面的命令,这个写法有些问题,原因是我们的目录里面没有clean这个文件,这个规则执行的条件成立,他就会执行下面的命令来删除文件。

如果:该目录下面有名为clean文件怎么办呢?

我们在该目录下创建一个名为“clean”的文件,然后重新执行:make然后make clean,结果(会有下面的提示:):

make: `clean' is up to date.

它根本没有执行我们的删除操作,这是为什么呢?

我们之前说,一个规则能过执行的条件:1),目标文件不错在2),依赖文件比目标新。现在我们的目录里面有名为“clean”的文件,目标文件是有的,并且没有依赖文件,没有办法判断依赖文件的时间。这种写法会导致:有同名的"clean"文件时,就没有办法执行make clean操作。解决办法:我们需要把目标定义为假象目标,用关键字PHONY。

.PHONY: clean	  //把clean定义为假象目标。他就不会判断名为“clean”的文件是否存在,

然后在Makfile结尾添加.PHONY: clean语句,重新执行:make clean,就会执行删除操作。

转载地址:http://yywkf.baihongyu.com/

你可能感兴趣的文章
目前最全的《Android面试题及解析》!灵魂拷问
查看>>
看完全都会了!普通二本的辛酸Android面试之路,送大厂面经一份!
查看>>
看完就能找到工作!面试官6个灵魂拷问,知乎上已获万赞
查看>>
看完直接怼产品经理!Android快速转战Kotlin教程,快来收藏!
查看>>
看完直接怼产品经理!一口气拿了9家公司的offer,持续更新中
查看>>
看懂这份Android面经大厂真不是问题!进阶学习资料!
查看>>
真是恍然大悟啊!Android开发你需要了解的那些事,深度好文
查看>>
Android之内存泄漏调试学习与总结,分享PDF高清版
查看>>
Android事件分发机制及设计思路,内容太过真实
查看>>
Android事件分发机制收藏这一篇就够了,成功拿下大厂offer
查看>>
Android事件分发机制收藏这一篇就够了,架构师必备技能
查看>>
Android初级开发是如何一步步成为高级开发?年薪超过80万!
查看>>
android动画原理,这些新技术你们都知道吗?offer拿到手软
查看>>
Android多线程断点续传,BAT大厂面试总结
查看>>
Android大厂高频面试题解析,大厂面经合集
查看>>
Android学习的三个终极问题及学习路线规划,快来收藏!
查看>>
android学习路线!阿里P7Android社招面试的经历,吐血整理
查看>>
7年老Android一次操蛋的面试经历,灵魂拷问
查看>>
7年老Android一次操蛋的面试经历,讲的明明白白!
查看>>
9次Android面试经验总结,手慢无
查看>>