subst String Replacement Function
$(subst <from>, <to>, <text>)
replaces the <from>
string in <text>
with <to>
and returns the replaced string.
SRC:=/mnt/hgfs/share/123
DES:=$(subst /mnt,/root,$(SRC)) #ATTENTION: is, /root not, /root
all:
@echo $(SRC)
@echo $(DES)
/mnt/hgfs/share/123
/root/hgfs/share/123
patsubst Pattern String Replacement Function
$(patsubst <pattern>, <replacement>, <text>)
checks if the words in <text>
(separated by spaces, tabs, or newlines) match the pattern <pattern>
. If they do, they are replaced with <replacement>
. The <pattern>
can include the wildcard %
, which represents a string of any length. If <replacement>
also contains %
, it will represent the string corresponding to <pattern>
‘s %
.
SRC:=/mnt/hgfs/share/123
DES:=$(patsubst %/123,%/456,$(SRC))
all:
@echo $(SRC) #Note: shell may not support @
@echo $(DES)
/mnt/hgfs/share/123
/mnt/hgfs/share/456
strip
$(strip a b c)
removes leading and trailing spaces from the string, resulting in “a b c”.
DES:=$(strip 12,43 ) #The parameter string starts from 1, can remove the last space
DES:=$(strip " 12,43 ") #The parameter string starts from space, can remove the last space
all:
@echo $(DES)
/mnt/hgfs/share/123
12,43
findstring String Search Function
$(findstring <find>, <in>)
searches for <find>
in the string <in>
. If found, it returns <find>
; otherwise, it returns empty.
SRC:=/mnt/hgfs/share/123
DES:=$(findstring /mnt,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
/mnt/hgfs/share/123
/mnt
filter Filtering Function
$(filter <pattern…>, <text>)
filters the words in <text>
based on the <pattern>
, retaining the words that match the <pattern
. Multiple <pattern>
can be used.
SRC:= 123.c 789.c 456.s eee.j
#DES:=$(filter %.c,%.s,$(SRC)) #WRONG!!!
DES:=$(filter %.c %.s,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
123.c 789.c 456.s
filter-out Anti-Filtering Function
$(filter-out <pattern…> ,<text>)
filters out the words in <text>
that match the <pattern>
, removing them. Multiple <pattern>
can be used.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(filter-out %.c,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
456.s eee.j
sort Sorting Function
$(sort <list>)
sorts the words in the string <list>
in ascending order.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(sort $(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
123.c 456.s 789.c eee.j
word Word Extraction Function
$(word <n>,<text>)
extracts the <n>
th word from the string <text>
. If n
is greater than the number of words in <text>
, it returns an empty string.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(word 2,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
789.c
wordlist Word List Extraction Function
$(wordlist <s>, <e>, <text>)
extracts the word list from <text>
starting from <s>
to <e>
. If s
is greater than <text>
, it returns empty. If e
is greater than <text>
, it returns the substring from s
to the end of <text>
.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(wordlist 2,4,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
789.c 456.s eee.j
words Word Count Function
$(words <text>)
returns the number of words.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(words $(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
4
firstword First Word Function
$(firstword <text>)
returns the first word of <text>
.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(firstword $(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
123.c
dir Directory Extraction Function
$(dir <names…>)
extracts the directory part from each name and returns the directory where the file is located. If there is no /
, it returns ./
.
SRC:=/mnt/hgfs/share/123
DES:=$(dir $(SRC))
all:
@echo $(SRC)
@echo $(DES)
/mnt/hgfs/share/123
/mnt/hgfs/share/
notdir File Extraction Function
$(notdir <names…>)
extracts the file part from each name and returns the filename. If there is no file, it returns empty. Here, the name must be a variable name, not the content of the variable; otherwise, nothing will be returned.
SRC:=/mnt/hgfs/share/123
DES:=$(notdir $(SRC))
all:
@echo $(SRC)
@echo $(DES)
/mnt/hgfs/share/123123
suffix Suffix Extraction Function
$(suffix <names…>)
extracts the suffix from a sequence of filenames and returns the suffix. If there is no suffix, it returns empty.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(suffix $(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
.c .c .s .j
basename Prefix Extraction Function
$(basename <names…>)
extracts the prefix from a sequence of filenames and returns the prefix. If there is no prefix, it returns empty.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(basename $(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j123 789 456 eee
addsuffix
$(addsuffix <suffix>, <names…>)
adds a suffix to each word in <names>
and returns the sequence of filenames with the added suffix.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(addsuffix _suf,$(SRC))all:
@echo $(SRC)
@echo $(DES)123.c 789.c 456.s eee.j
123.c_suf 789.c_suf 456.s_suf eee.j_suf
addprefix
$(addprefix <prefix>, <names…>)
adds a prefix to each word in <names>
and returns the sequence of filenames with the added prefix.
SRC:= 123.c 789.c 456.s eee.j
DES:=$(addprefix prf_,$(SRC))
all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
prf_123.c prf_789.c prf_456.s prf_eee.j
join
$(join <list1> , <list2>)
connects the words in <list2>
to the corresponding words in <list1>
. If <list1>
has more words, the extra words remain as they are. If <list2>
has more words, the extra words are copied to <list2>
.
SRC:= 123.c 789.c 456.s eee.j
SRCJOIN:= q e r t y u
DES:=$(join $(SRC),$(SRCJOIN))all:
@echo $(SRC)
@echo $(DES)
123.c 789.c 456.s eee.j
123.cq 789.ce 456.sr eee.jt y u
foreach
$(foreach <var>, <list>, <text>)
takes each word from <list>
and assigns it to the variable <var>
, then executes the expression contained in <text>
. The strings returned by <text>
will be separated by spaces. At the end of the loop, the entire string returned by <text>
will be the return value of the foreach function.
if
$(if <condition>, <then-part>)
$(if <condition>, <then-part>,<else-part>)
where <condition>
returns true if non-zero.
call Create Function Function
$(call <expression>, <param1>, <param2>, <param3>…)
origin Determine Variable Origin
$(origin <variable>)
returns values such as “undefined”, “default”, “environment”, “file”, “command line”, “override”, “automatic”.
shell
$(shell <shell-command>)
or $(<shell-command>)
where the parameter is a shell command.
error
$(error <text…>)
is an error generation function, where <text…>
is the error message.
