makefile学习总结

(1)  
.c.o 相当于 %o:%c

src = $(wildcard ./*.c): 匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。  src = add.c sub.c div1.c

obj = $(patsubst %.c, %.o, $(src)): 将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o

clean:
    -rm -rf $(obj) a.out	“-”:作用是,删除不存在文件时,不报错。顺序执行结束。

$@: 在规则的命令中,表示规则中的目标。
$^: 在规则的命令中,表示所有依赖条件。
$<: 在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将依赖条件列表中的依赖依次取出,套用模式规则。

模式规则:
		%.o:%.c
		   gcc -c $< -o %@

静态模式规则:
		$(obj):%.o:%.c
		   gcc -c $< -o %@	
使用静态模式规则,就是指定模式规则给谁用,这里指定模式规则给obj用,以后文件多了,
文件集合会有很多个,就需要指定哪个文件集合用什么规则

(2)
-I			指定头文件所在目录位置
-c 			只做预处理,编译,汇编。得到二进制文件
-g 			编译时添加调试文件,用于gdb调试
-Wall 		显示所有警告信息
-D  		向程序中“动态”注册宏定义
-l			指定动态库库名
-L			指定动态库路径

(3)  
OBJS=abc.o abd.o abe.o
CC=gcc
CFLAGS=-g -Wall -c

myexe:$(OBJS)
    $(CC) $^ -o $@       # $^ 是指":"右边的所有.o;$@指左边要生成的目标文件

%.o:%.c
    $(CC) $^ $(CFLAGS) -o $@      # 生成上面需要的.o文件

clean:
    $(RM) *.o myexe -r            # 删除.o和myexe

(4)
用伪目标来解决使用"make clean"时makefile去执行clean文件等类似问题,添加一行   .PHONY: clean ALL

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值