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