Makefile 多个文件生成一个可执行文件
#LINUXPUBLICPATH = ../public/ #add wain 2016-01-12 CC := mipsel-linux-gcc EXEC = upsgsm # UPSWARNSVROBJS = gsmprocess.o cloud.o gsm.o cJSON.o gsm_datastructure.o gsm_uart.o md5.o periphery.o public.o ups_gsm.o LIBSPATH = /opt/rampis-mt76x8-gcc7.3.0_musl/openwrt_usr INCLUDEPATH := -I$(LIBSPATH)/include/ -I/opt/code/L2001_public/release/ramips/include -I$(LIBSPATH)/lib/libiconv-full/include -I./ #-I./curl/include/ LIBRARYPATH := -L$(LIBSPATH)/lib/ -L$(LIBSPATH)/lib/libiconv-full/lib #-L./curl/lib/ LIBPUBLIC := /opt/code/L2001_public/release/ramips/lib/libpublic.a #LDLIBS += $(INCLUDEPATH) $(LIBRARYPATH) -lzlog -ljson-c -lcurl -lz -lpthread LIBS := $(LIBRARYPATH) -lzlog -lz -liconv -ljson-c $(LIBPUBLIC) # CFLAGS = -Wall -O -g -D EMBED $(INCLUDEPATH) $(SNMPDINCPATH) CFLAGS = -Wall -O -g -D EMBED #LIBPUBLIC = /workdir/guojun/work/V2CODE/L1607_public/source/trunk/libpublic.a SRCS := $(wildcard *.c) $(wildcard ./src/*.c) OBJS := $(patsubst %.c,%.$(TARGET).o, $(SRCS)) DEPS := $(patsubst %.$(TARGET).o,%.$(TARGET).d, $(OBJS)) all: $(TARGET)/$(EXEC) $(TARGET)/$(EXEC): $(DEPS) $(OBJS) test -d $(TARGET) || mkdir -p $(TARGET) $(CC) -o $(TARGET)/$(EXEC) $(OBJS) $(LIBS) # test -d ../../release/$(TARGET)/usr/local || mkdir -p ../../release/$(TARGET)/usr/local # test -d ../../release/$(TARGET)/usr/local/bin || mkdir -p ../../release/$(TARGET)/usr/local/bin # $(STRIP) $@ # cp -rf $@ ../../release/$(TARGET)/usr/local/bin test -d ../../release/$(TARGET)/bin || mkdir -p ../../release/$(TARGET)/bin $(STRIP) $@ cp -rf $@ ../../release/$(TARGET)/bin %.$(TARGET).d : %.c $(CC) $(INCLUDEPATH) -MM $< > $@ $(CC) $(INCLUDEPATH) -MM $< -MQ $@ >> $@ %.$(TARGET).o : %.c public.h $(CC) $(CFLAGS) -c $(INCLUDEPATH) -o $@ $< .PHONY: clean clean: -rm $(TARGET)/$(EXECUTABLE) -f -rm $(OBJS) -f -rm $(DEPS) -f depend : $(DEPS) @echo "Dependencies are now up-to-date." -include $(DEPS)
参考链接: https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?