Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件

最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了

只需要 改两个 参数 就可以执行了(MYLIBVPATH), 代码 如下:

 

复制代码
PWD=$(shell pwd)
#INCS=-I$(PWD)/include

# change to you project name
MYLIB = SQLiteCpp.a
# change to you project file dir
VPATH = include:src:sqlite3
# the obj dir
OBJDIR = obj

###########################################################################
# auth lzpong # source files SRCS
= $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.cpp)) SRCSC = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.c)) # obj files OBJS_1 = $(addsuffix .o,$(basename $(SRCS))) OBJSC_1 = $(addsuffix .o,$(basename $(SRCSC))) OBJS = $(foreach n,$(notdir $(OBJS_1)),$(OBJDIR)/$(n)) OBJSC = $(foreach n,$(notdir $(OBJSC_1)),$(OBJDIR)/$(n)) # head files HEADERS = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.h)) HEADERS += $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.hpp)) HEADERS += $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.inc)) CC = gcc CXX = g++ -std=c++11 INCS = $(patsubst %,-I%,$(subst :, ,$(VPATH))) CFLAGS += $(INCS) CXXFLAGS += $(INCS) LIBS += -lncurses -lesl -lpthread -lm LDFLAGS += -L. PICKY = -O2 #SOLINK = -shared -Xlinker -x #DEBUG = -g -ggdb #LIBEDIT_DIR = ./ all: $(MYLIB) $(MYLIB): $(OBJS) $(SRCS) $(OBJSC) $(SRCSC) $(HEADERS) ar rcs $(MYLIB) $(OBJS) $(OBJSC) ranlib $(MYLIB) # *.cpp files commpare $(OBJS): $(SRCS) $(HEADERS) @test -d $(OBJDIR) | mkdir -p $(OBJDIR) $(CXX) -c $(SRCS) $(INCS) mv *.o $(OBJDIR)/ # *.c file commpare $(OBJSC): $(SRCSC) $(HEADERS) @test -d $(OBJDIR) | mkdir -p $(OBJDIR) $(CC) -c $(SRCSC) $(INCS) mv *.o $(OBJDIR)/ clean: rm -rf $(OBJDIR) rm -f *.o *.a
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。 原文链接:https://www.cnblogs.com/lzpong/p/9205736.html
posted @   _Ong  阅读(3452)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示