makefile递归历程

本文详细介绍了Makefile的递归调用方式,包括使用`$(MAKE) -C`命令进行目录切换和如何通过`export`命令将总控Makefile中的变量传递给子目录的Makefile。示例展示了总控Makefile和子目录Makefile的编写,阐述了如何构建和清理目标文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.递归调用的方式

add:
cd add && $(MAKE)
它等价于

add:
$(MAKE) -C add

2.总控Makefile

CC = gcc
CFLAGS = -O2
TARGET = cacu
export OBJSDIR = $(shell pwd)/objs

(TARGET):(TARGET):(TARGET):(OBJSDIR) main.o
$(MAKE) -C add
$(MAKE) -C sub
$(CC) -o $(TARGET) $(OBJSDIR)/*.o

$(OBJSDIR):
mkdir -p $@

main.o:%.o:%.c
$(CC) -c $< -o (OBJSDIR)/(OBJSDIR)/(OBJSDIR)/@ $(CFLAGS) -Iadd -Isub

clean:
-$(RM) (TARGET)−(TARGET) -(TARGET)(RM) $(OBJSDIR)/*.o
如果总控 Makefile 中的一些变量需要传递给下层的 Makefile,可以使用 export 命令。如:export OBJSDIR = ./objs

3.子目录Makefile的编写

Add 目录下的 Makefile 如下:

OBJS = add_int.o add_float.o
all:$(OBJS)

$(OBJS):%.o:%.c
$(CC) -c $< -o (OBJSDIR)/(OBJSDIR)/(OBJSDIR)/@ $(CFLAGS)

clean:
$(RM) $(OBJS)

Sub 目录下的 Makefile 如下:
OBJS = sub_int.o sub_float.o
all:$(OBJS)

$(OBJS):%.o:%.c
$(CC) -c $< -o (OBJSDIR)/(OBJSDIR)/(OBJSDIR)/@ $(CFLAGS)

clean:
$(RM) $(OBJS)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值