示例:
HOME := $(shell echo ${GSF_HOME}) CC := $(shell echo ${GSF_CC}) AR := $(shell echo ${GSF_AR}) CFLAGS := $(shell echo ${GSF_CFLAGS}) LDFLAGS := -g $(shell echo ${GSF_LDFLAGS}) $(shell echo ${GSF_EXECFLAGS}) TARG := bin/bsp.exe #============================================================= INCS := -I$(HOME) -Isrc -Iinc TMPDIR := ./objs VPATH = ./src SRCS := $(notdir $(wildcard ./src/*.c)) OBJS = $(SRCS:%.c=$(TMPDIR)/%.o) DEPS = $(SRCS:%.c=$(TMPDIR)/%.d) PRES = $(SRCS:%.c=$(TMPDIR)/%.i) LIBS += -L$(HOME)/lib/$(GSF_CPU_ARCH) -lcfifo -lrt -lnm -lcjson -lcomm -lm -lpthread $(TARG): $(OBJS) $(PRES) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) cp $(TARG) $(HOME)/bin/$(GSF_CPU_ARCH)/ -v $(TMPDIR)/%.o: %.c $(TMPDIR)/%.d $(CC) $(CFLAGS) $(INCS) -c -MMD -MP $< -o $@ $(TMPDIR)/%.i: %.c $(TMPDIR)/%.d $(CC) $(CFLAGS) $(INCS) -E $< -o $@ clean: -rm $(TARG) $(OBJS) $(DEPS) $(PRES) src/*.bak -rf $(TMPDIR)/%.d: ; -include $(DEPS) .Phony: clean
参考链接:https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options
关于-MP选项,参考makefile生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明_MyObject-C的博客-CSDN博客_gcc -md -mf