函数
程序员文章站
2022-07-13 21:21:58
...
文章目录
函数
Make 工程管理器也有函数机制,和变量一样,函数也用符合 $
进行标识,其使用格式如下:
$(函数名 参数1,参数2,...)
其中 函数名 与 参数 之间用空格隔开,参数 与 参数 之间用 ,
隔开。
常见的内置函数如下:
subst
:字串替换
-
函数原型:
$(subst 参数1, 参数2, 参数3)
; -
函数功能: 把
参数3
中的子串参数1
替换成参数2
; -
返回值: 返回新的
参数3
; -
例子:
result := $(subset china, the world, I love china)
;result
为I love the world
;
patsubset
:字串替换
-
函数原型:
$(patsubset 模式, 参数1, 参数2)
; -
函数功能: 把
参数2
中符合模式
的字串替换成参数1
; -
返回值: 返回新的
参数2
; -
例子:
result := $(patsubset %.c, %.o, x.c y.c)
;result
为x.o y.o
;
wildcard
:按模式列举文件名
-
函数原型:
$(wildcard 模式参数)
; - 函数功能: 列出当前目录中符合模式参数的文件名;
- 返回值: 返回符合模式参数的文件名;
-
例子:
result := $(wildcard *.c)
;result
为当前目录下所有.c
文件;
strip
:去掉参数中首尾空格
-
函数原型:
$(strip 参数)
; - 函数功能: 去掉参数中首尾空格;
- 返回值: 返回去掉首尾空格后的参数;
-
例子:
result := $(strip China )
;result
为China
;
findstring
:在源参数中查找指定的参数
-
函数原型:
$(findstring 参数1, 参数2)
; -
函数功能: 在
参数2
中查找指定的参数参数1
; -
返回值: 如果找到指定的
参数1
,返回1
;否则,返回空
; -
例子:
result := $(findstring she, you and me)
;result
为``;
filter
:从参数中筛选出符合模式的字符串
-
函数原型:
$(findstring 模式参数, 参数1)
; -
函数功能: 从
参数1
中筛选出符合模式参数的字符串; - 返回值: 符合参数模式的字符串;
- 例子:
a := x.c y.c z.h
result := $(findstring %.c, $(a))
result
的值为 x.c y.c
addsuffix
:添加后缀
-
函数原型:
$(addsuffix words, suffix)
; -
函数功能: 在
words
的每个单词后面加上suffix
; - 返回值: 返回加上后缀之后的所有单词;
-
例子:
result := $(addsuffix .c, x y)
;result
为x.c y.c
;
addprefix
:添加前缀
-
函数原型:
$(addprefix words, suffix)
; -
函数功能: 在
words
的每个单词前面加上suffix
; - 返回值: 返回加上前缀之后的所有 单词;
-
例子:
result := $(addprefix src/, x.c y.c)
;result
为src/x.c src/y.c
;
foreach
:
-
函数原型:
$(addprefix 参数变量, words, 表达式)
; -
函数功能: 循环取出
words
中的单词赋给参数变量
, 最后运行表达式
; -
返回值: 返回
表达式
的结果; - 例子:
a := x y z
result := $(foreach v, $(a) $(v).c)
result
的结果为:x.c y.c z.c
call
:循环把参数赋给指定变量集
-
函数原型:
$(call variates, words)
; -
函数功能: 循环把
words
中的单词赋给variates
中的变量 $(1), $(2), …; -
返回值: 赋值后的变量值;
例子:
a := $(2) $(1)
result := $(call $(a), x y)
result
的结果为:yx
if
:如果条件参数
为非空,则执行执行参数
-
函数原型:
$(if 条件参数, 执行参数)
; -
函数功能: 如果
条件参数
为非空,则执行执行参数
; -
返回值: 返回
执行参数
结果; - 例子:
result := $(if China, world)
result
的结果为:world
if
:如果条件参数
为非空,则执行执行参数
-
函数原型:
$(if 条件参数, 执行参数)
\$(if 条件参数, 执行参数1, 执行参数2)
; -
函数功能: 如果
条件参数
为非空,则执行执行参数
/ 如果条件参数
为非空,则执行执行参数1
;否则,执行执行参数2
; -
返回值: 返回
执行参数
结果 / 返回执行参数
的结果; - 例子:
result := $(if China, world) # `result` 的结果为:`world`
a :=
result := $(if $(a), China, world) # `result` 的结果为:`world`
dir
:从参数
中提取目录部分
-
函数原型:
$(if 参数)
; -
函数功能: 从
参数
中提取目录部分; - 返回值: 目录部分;
-
例子:
result := $(if /home/test/a.c)
result
的结果为:/home/test
error
:停止 Make 运行并显示参数
-
函数原型:
$(error 参数)
; -
函数功能: 停止 Make 运行并显示
参数
; -
返回值:
参数
; -
例子:
result := $(error error occure)
result
的值为:error occure!
warning
:Make 运行时显示参数
-
函数原型:
$(warning 参数)
; -
函数功能: Make 运行时并显示
参数
; -
返回值:
参数
; -
例子:
result := $(warning warning occure)
result
的值为:warning occure!
上一篇: java中Double转为String时不以科学计数法显示
下一篇: 树状数组初步_ZERO