makefile学习记录 :一个工程里有多个makefile 如何make根目录下的makefile 调用子目录下的makefile,编译所有.c文件

注:本文个人学习记录

目的:一个工程里有多个makefile 如何make根目录下的makefile 调用子目录下的makefile,编译所有.c文件

如图所示 目录结构 ,根目录server: makefile ;子目录 so :makefile

 

 

根目录makefile:

GCC=gcc

APP=server

 

ALL_C=$(wildcard ./*.c)

C_OBJ=$(notdir $(ALL_C))

O_OBJ=$(patsubst %.c,%.o,$(C_OBJ))

LIBS=-lpthread 

 

.PHONE:all  # 将all 设置成伪目标,all会第一个执行 ,但不会生产目标,依赖的目标会依次执行

all:libfile.a $(APP)   #依赖的目标 libfile.a  、 server

libfile.a:

$(MAKE) -C ./so/ #跳出当前工作目录进入到子目录中,编译.c文件,编译完后回到当前目录  $(MAKE) -C (路径)   

$(APP):$(C_OBJ)        #编译当前目录下的.c 生成目标程序

$(GCC) $^ -lfile -L./so/ -o $@ $(LIBS)

 

.PHONY:clean

clean:

rm -r $(APP) ./so/*.o ./so/*.a   #清理子目录下的编译后产生的文件 ,当前目录下的目标文件

so 目录 :编译静态库

libfile.a:myfile.o

ar crv libfile.a myfile.o

myfile.o:myfile.c

gcc -c myfile.c

.PHONY:clean

clean:

rm libfile.a myfile.o

编译验证:

 

 编译:

 

编译结果:

 

 

 

参考:多文件目录下makefile文件递归执行编译所有c文件 - Shirlies - 博客园

         嵌套执行MAKE $(MAKE) -C subdir_rongwenbin的博客-CSDN博客

 

https://blog.csdn.net/qq_35612415/article/details/123511196

 

posted @   imxiangzi  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示