Linux Makefile的隐式规则(简单的理解)

看了Makefile用法,一直不明白什么事隐式规则,定义是这样的
在这里插入图片描述
然后就出个这个,怎么回事,有点蒙,网上找了下,也很难理解,是我太愚钝了吧…

在这里插入图片描述
看了很久才有点名明白,就是他会默认调用规则
在这里插入图片描述
.c文件编译成.o文件 要用隐式规则的话就要就用第一个 $(CFLAGS)是可以自己再来定义的 如 CFLAGS = -Wall -O -g

举个例子吧
建三个文件

在这里插入图片描述

//add.c
#include "add.h"
void add(int x,int y)
{
	printf(" num is %d \n ",x+y);

}

//add.h  我这文件是房子hrp文件夹下
#include <stdio.h>
void add(int ,int );

//main.c
#include <stdio.h>
#include "add.h"
int main()	
{
	add(14,30);

	printf("wh are you");
	return 0;
}		

代码就是随便写。。。

然后没用隐式规则的makefile

OBJS = add.o main.o

main:$(OBJS)
	gcc  $(OBJS) -o main
add.o:add.c
	gcc -c -I./hrp  add.c -o add.o
main.o:main.c
	gcc -c -I./hrp main.c -o main.o
clean:

	rm *.o

在这里插入图片描述

在这里插入图片描述
成功了,make -f 是make指定的makefile文件

然后我们看看隐式的

OBJS = add.o main.o

CFLAGS = -Wall -O -g -I./hrp
main:$(OBJS)
	gcc -I./hrp  $^ -o $@
#     上面的其实就是这个规则来的   $(CC)-c $(CPPFLAGS) $(CFLAGS)
#     $(CFLAGS)这个我们可以自定义  CFLAGS = -Wall -O -g -I./hrp
 
clean:
	rm *.o
	

我们执行下make
在这里插入图片描述

发现也是可以的

如果我们把
makefile文件的
CFLAGS = -Wall -O -g -I./hrp 改了 像这样
在这里插入图片描述
明显是头文件路径不对了在这里插入图片描述
这说明了什么呢,$(CFLAGS)是隐藏的,我们可以自己去定义
这然来理解隐式规则应该比较容易把。。。
**

如果有错大家一定要指出来哈

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值