//参考跟我一起写Makefile这文件名操作函数
#Build with external xelog.h
CFLAGS += -DCONFIG_USE_EXTERNAL_XELOG=1
#CFLAGS += -UCONFIG_USE_EXTERNAL_XELOG
LDFLAGS += -lpthread
SRC_FILES := $(wildcard *.c)
ALL_BINS := $(patsubst %.c, %.bin, $(SRC_FILES))
DEP_FILES := $(addsuffix .d,$(basename $(SRC_FILES)))
%.bin:%.c
$(CC) -o $@ $(CFLAGS) $< $(LIB_A) $(LDFLAGS)
.PHONY: all clean
all: $(LIB_A) $(ALL_BINS)
chmod +x $(ALL_BINS)
rm -rf $(DEP_FILES)
@echo "build test_local finish"
clean:
rm -rf $(ALL_BINS) $(DEP_FILES)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEP_FILES)
endif
1) wildcard函数
它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。
2)patsubst
$(patsubst <pattern>,<replacement>,<text>)
名称:模式字符串替换函数——patsubst。
功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“\”来转义,以“\%”来表示真实含义的“%”字符)
返回:函数返回被替换过后的字符串。
3)addsuffix
$(addsuffix <suffix>,<names...>)
名称:加后缀函数——addsuffix。
功能:把后缀<suffix>加到<names>中的每个单词后面。
返回:返回加过后缀的文件名序列。
示例:$(addsuffix .c,foo bar)返回值是“foo.c bar.c”