make编译笔记(五)隐含规则

隐含规则

隐含规则是一种惯例,一种隐含的,早约定好的,不需要再写出来的规则。例如把.c文件编译成.o文件。隐含规则会使用一些系统变量,可以改变这些系统变量的值来定制隐含规则的运行时参数,如系统变量CFLAGS可以控制编译时的编译器参数。可以通过模式规则的方式写下自己的隐含规则,显得智能和清楚。用后缀规则定义隐含规则会有许多限制,但可以保证Makefile的兼容新。

使用隐含规则

例:

foo:foo.o bar.o
    cc -g foo foo.o bar.o $(CFLAGS) &(LDFLAGS)

make的隐含规则会自动推导foo.o和bar.o这两个目标的依赖文件和生成命令。make在自己的隐含规则库中寻找可以用的规则,有就用,找不到就报错。

如果伪.o文件书写了规则,那么make就不会自动推导并调用隐含规则,按照写好的规则执行。

隐含规则一览

如果不明确的写下规则,那么make就在所有预设的隐含规则中寻找所需要的规则和命令。可以使用make的参数-r或--no-builtin-rules选项来取消所有的预设值的隐含规则。即使使用了-r参数,某些隐含规则还是会生效的,因为许多隐含是使用后缀规则来定义的。默认的后缀列表(在后缀列表中的隐含规则生效)有:.out、.a、.ln、.o、.c、.cc、.C、.p、.f、.F、.r、.y、.l、.s、.S、.mod、.sym、.def、.h、.info、.fvi、.tex、.txeinfo、.texi、.txinfo、.w、.ch、.web、.sh、.elc、.el。

常用隐含规则:

  • 编译C程序的隐含规则

文件名.o的依赖目标会自动推导为文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值