在makefile中同时让C代码和汇编代码都自动生成.o文件

最近遇到一个需求,目录下有多个c文件和S文件(汇编代码),需要把他们都自动编译成.o文件.经过摸索,最终解决方案如下:

SRCS1 := $(wildcard *.c)
SRCS2 := $(wildcard *.S)

OBJS1 := $(patsubst %.c,%.o,$(SRCS1)) 
OBJS2 := $(patsubst %.S,%.o,$(SRCS2))  

.PHONY : all
all : $(OBJS1) $(OBJS2)

$(OBJS1) : %.o : %.c
	$(GCC) -c $< $(CFLAG)
	
$(OBJS2) : %.o : %.S
	$(GCC) -c $< $(CFLAG)
	
.PHONY : clean
clean : 
	-rm *.o

核心思路就是

1.利用Makefile的分级目标机制,把汇编文件和c文件分别放到两个不同的子目标中.

比如 $(OBJS1) : %.o : %.c 的意思就是告诉编译器对$(OBJS1)这个列表中的所有.o文件,都有同名的.c文件产生.

类似的$(OBJS2) : %.o : %.S

的意思就是告诉编译器对$(OBJS2)这个列表中的所有.o文件,都有同名的.S文件产生.

这样就解决了.c和.S都产生.o文件的矛盾

2在all目标中依次调用这两个子目标即可.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值