前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >makefile中伪目标的理解

makefile中伪目标的理解

作者头像
xcywt
发布2018-01-11 17:56:09
1.5K0
发布2018-01-11 17:56:09
举报
文章被收录于专栏:xcywtxcywt

1. 我们知道Makefile中的语法是这样:

target ... : prerequisites ... command … …

2. 假如编译两个文件可以这么写:

代码语言:javascript
复制
a.o:a.c  gcc -c a.c b.o:b.c  gcc -c b.c Test: a.o b.o   gcc -o Test a.o b.oclean:  rm *.o

我们可以单独这么运行: make a.o 或者 make b.o 或者 make clean 注意上面三个的区别。前两个都会生成目标,而第三个不会生成目标,仅仅希望执行所在规则(clean)定义的命令(rm)。 这个时候就需要伪目标出马了:目的不是为了生成目标,仅仅是希望执行其所在规则定义后面的命令

3. 伪目标定义

代码语言:javascript
复制
a.o:a.c  gcc -c a.cb.o:b.c  gcc -c b.cTest: a.o b.o  gcc -o Test a.o b.o.PHONY:cleanclean:  rm *.o

就像上面这样,多一个 .PHONY声明,那么clean就是伪目标了

4. 为什么要使用伪目标: 1)避免在我们的Makefile中定义的只执行命令的目标和工作目录下实际文件名字出现冲突。(比如,假如当前目录有一个clean文件,那么上面的 make clean 就不能达到我们的预期了) 2)提高执行效率,被声明为伪目标后,make在执行此规则时不会视图去查找隐含规则来创建这个目标。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档