函数调用的格式如下:
$(<function> <arguments>)
或者是
${<function> <arguments>}
其中,
function
是函数名;arguments
是函数的参数,参数之间要用逗号分隔开;而参数和函数名之间使用空格分开。
调用函数的时候要使用字符 $
,后面可以跟小括号也可以使用花括号。
函数使用格式如下:
$(patsubst <pattern>,<replacement>,<text>)
函数说明:函数功能是查找 text
中的单词是否符合模式 pattern
,如果匹配的话,则用 replacement
替换。返回值为替换后的新字符串。实例:
OBJ=$(patsubst %.cpp, %.o, 11.cpp 22.cpp 33.cpp)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/ifeq$ make
echo 11.o 22.o 33.o
11.o 22.o 33.o
wohu@ubuntu:~/cpp/ifeq$
函数使用格式如下:
$(subst <from>,<to>,<text>)
函数说明:函数的功能是把字符串中的 form
替换成 to
,返回值为替换后的新字符串。实例:
OBJ=$(subst oo,ss, faoo fcoo )
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo fass fcss
fass fcss
wohu@ubuntu:~/cpp/func$
函数使用格式如下:
$(strip <string>)
函数说明:函数的功能是去掉字符串的开头和结尾的字符串,并且将其中的多个连续的空格合并成为一个空格。返回值为去掉空格后的字符串。实例:
OBJ=$(strip a b c )
all:
echo $(OBJ)
执行完 make 命令
wohu@ubuntu:~/cpp/func$ make
echo a b c
a b c
wohu@ubuntu:~/cpp/func$
函数使用格式如下:
$(findstring <find>,<in>)
函数说明:函数的功能是查找 in
中的 find
,如果我们查找的目标字符串存在。返回值为目标字符串,如果不存在就返回空。实例:
OBJ=$(findstring is, it is dog)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo is
is
wohu@ubuntu:~/cpp/func$
函数使用格式如下:
$(filter <pattern>,<text>)
函数说明:函数的功能是过滤出 text
中符合模式 pattern
的字符串,可以有多个 pattern
。返回值为过滤后的字符串。实例:
OBJ=$(filter %.cpp %.o, a.cpp b.o c.txt)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo a.cpp b.o
a.cpp b.o
wohu@ubuntu:~/cpp/func$
函数使用格式如下:
$(filter-out <pattern>,<text>)
函数说明:函数的功能是功能和 filter
函数正好相反,但是用法相同。
去除符合模式 pattern
的字符串,保留符合的字符串。返回值是保留的字符串。实例:
OBJ=$(filter-out %.cpp %.o, a.cpp b.o c.txt)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo c.txt
c.txt
wohu@ubuntu:~/cpp/func$
函数使用格式如下:
$(sort <list>)
函数说明:函数的功能是将 list
中的单词排序(升序)。返回值为排列后的字符串。实例:
OBJ=$(sort z, y, y, x)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo x y, z,
x y, z,
wohu@ubuntu:~/cpp/func$
sort 会去除重复的字符串。
函数使用格式如下:
$(word <n>,<text>)
函数说明:函数的功能是取出函数 text
中的第 n
个单词。返回值为我们取出的第 n
个单词。实例:
OBJ=$(word 3, a.cpp, b.cpp, c.cpp)
all:
echo $(OBJ)
执行 make
命令,
wohu@ubuntu:~/cpp/func$ make
echo c.cpp
c.cpp
wohu@ubuntu:~/cpp/func$