Makefile中的 wildcard patsubst

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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章