Makefile与make的使用解析

Makefile与make是配套使用的
编写Makefile需要知道一个规则,两个函数,三个变量
一、一个规则
定义:若想生成目标,需要检查目标中的依赖条件是否存在,如不存在,需要寻找是否有规则生成该依赖文件。
检查规则中的目标是否需要被更新,必须检查他所有的依赖,依赖中任何一个被更新,则目标被更新。
编写Makefile的格式:

目标文件:依赖条件
	(一个Tab缩进)命令
例子:
1、hello:hello.c	
	gcc hello.c -o hello
然后使用 make 该目录下就会生成 hello		
2、hello:hello.o
   	gcc hello.o -o hello 
   hello.o:hello.c
	gcc -c hello.c -o hello.o
   然后使用 make 该目录下就会生成 hello.o 和 hello	
   此时需要注意 make编译命令的编译过程,make编译是有一定顺序的,比如执行第一句的时候判断,需不需要其他依赖条件,不需要则就执行第一句,需要则往下寻找依赖条件,执行下面的命令
hello.o:hello.c
        gcc -c hello.c -o hello.o 
hello:hello.o
        gcc hello.o -o hello 
这个顺序是不能够执行第二句命令的
 

二、两个函数


1、src = $(wildcard  *.c)  //$()是取变量值的意思
找到当前目录下所有后缀名为.c的文件赋值给src,即匹配当前目录下的所有.c文件,并赋值给src
例如:src = a.c b.c c.c d.c
2、obj = $(patsubst %.c,%.o, $(src))
将src 变量里所有后缀为.c的文件替换成.o,即将参数三中,包含参数一的部分,替换成参数二
例如:obj = a.o b.o c.o d.o
补充 :
clean:
	-rm -rf $(obj) a.out
shell命令:make clean //将会删除所有.o文件

三、三个自动变量

1、$@:在规则的命令中,表示规则的目标 
2、$<:在规则的命令中,表示第一个依赖条件
       如果将该变量应用在模式规则中,他可将依赖条件列表中的依赖依次取出,套用模式规则
3、$^:在规则的命令中,表示所有依赖条件
一个规则中的例二可以改成:
hello:hello.o
	gcc $< -o $@
hello.o:hello.c
	gcc $< -o $@	
补充:模式规则
%.c:%.o
	gcc  -c $< -o $@
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值