//參考跟我一起寫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”