makefile 编译不同目录下的源文件

如题,今天我们来解决 在makefile文件中 如何配置,编译在不同目录下的源文件,因为有时候有这样的场景嘛。

测试场景

目录结构如下,头文件在include下,源文件在 src下,客户端程序main.c 在 03makefile文件下。如何来编译main.c呢?


makefile文件内容

文件内容有详细解释哟,由于在不同目录下,那么我们在编译.c文件时,他们的路径就会有多个,模式匹配就要写多个

target = app
#由于 .c文件在不同的文件下,那么匹配模式 要匹配不同文件下的%.c文件
src1 = $(wildcard ./src/*.c)
src2 = $(wildcard ./*.c)
obj1 = $(patsubst %.c,%.o,$(src1))
obj2 = $(patsubst %.c,%.o,$(src2))
src = ./src/


$(target):$(obj1) $(obj2)
	gcc $^ -o $@
#	gcc $(obj) -o $(target)
#编译 src下的.c文件 为.o文件	
%.o:$(src)%.c
	gcc -c $< -o $@
#编译 当前文件下的main.c文件
%.o:%.c
	gcc -c $< -o $@
.PHONY:clean #防止 外面有clean文件 阻止执行clean
clean:
	#-mkdir /root/aaa  #在命令前添加 - 当前命令出错,仍然可以往后面执行
	-rm $(target) $(obj1) $(obj2) -f
hello:
	echo "hello world"

检验结果




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值