1.. specify the directores , i not specified , search current directory put every folder into a listSRCDIRS := ifeq ($(SRCDIRS),)SRCDIRS := $(shell fi ...
1.. specify the directores , i not specified , search current directory put every folder into a list
SRCDIRS :=
ifeq ($(SRCDIRS),)
SRCDIRS := $(shell find $(SRCDIRS) -type d)
2.. addprefix:
作用是給每個string添加首碼,string之間用空格隔開。
$(addprefix prefixstr, string1 string2 ...)
如: $(addprefix chapters/, docx pdf jpg)
3.. addsufix: 增加尾碼;basename:取首碼;
OBJS = $(addsuffix .o, $(basename $(SOURCES)))
4..
$(foreach <var>,<list>,<text>)
這個函數的意思是,把參數<list>中的單詞逐一取出放到參數<var>所指定的變量中,然後再執行<text>所包含的表達式。每一次<text>會返回一個字元串,循環過程中,<text>的所返回的每個字元串會以空格分隔,最後當整個循環結束時,<text>所返回的每個字元串所組成的整個字元串(以空格分隔)將會是foreach函數的返回值。
example:
SRCEXTS = .cpp
SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
HDREXTS = .h
HEADERS = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(HDREXTS))))