Makefile笔记总结(三)--->make函数

目录

1.函数的调用语法

2.文本处理函数

        2.1 $(subst FROM, TO, TEXT)

        2.2 $(patsubst PATTERN, REPLACEMENT, TEXT)

        2.3 $(strip STRINT)

        2.4 $(findstring FIND,IN)

        2.5 $(filter PATTERN..., TEXT)

        2.6 $(filter-out PATTERN..., TEXT)

        2.7 $(sort LIST)

        2.8 $(word N, TEXT)

        2.9 $(wordlist S, E, TEXT)

        2.10 $(words TEXT)

        2.11 $(firstword NAMES...)

3.文件名处理函数

        3.1 $(dir NAMES...)

        3.2 $(notdir NAMES...)

        3.3 $(suffix NAMES...)

        3.4 $(basename NAMES...)

        3.5 $(addsuffix SUFFIX, NAMES...)

        3.6 $(addprefix PREFIX, NAMES...)

        3.7 $(join LIST1, LIST2)

        3.8 $(wildcard PATTERN)

4.make的控制函数

        4.1 $(error TEXT...)

        4.2 $(warning TEXT...)

5.其它函数

        5.1 foreach 函数

        5.2 if 函数

        5.3 call 函数

        5.4 value 函数

        5.5 eval 函数

        5.6 origin 函数

        5.7 shell 函数

 6.make 命令行选项

 7. override 指示符

 8.系统环境变量


1.函数的调用语法

$(函数名 函数的参数) 或 ${函数名 函数的参数}

函数名:make内嵌的函数名,用户自己的函数需要通过make call 函数调用
函数的参数: 多参数用 逗号 隔开

2.文本处理函数

        2.1 $(subst FROM, TO, TEXT)

$(subst FROM, TO, TEXT)

功能: 把 TEXT 中的 FROM 字符 替换为 TO

        2.2 $(patsubst PATTERN, REPLACEMENT, TEXT)

$(patsubst PATTERN, REPLACEMENT, TEXT)

功能:搜索 TEXT 中以空格分开的单词,符合 PATTERN 模式 替换为 REPLACEMENT
PATTERN: 可以使用通配符 % 代表一个单词中的若干字符

       

        2.3 $(strip STRINT)

$(strip STRINT)

功能:去掉字串 STRINT 开头和结尾的空字符,并将其中多个连续空字符合并为一个空字符

        2.4 $(findstring FIND,IN)

$(findstring FIND,IN)

功能:搜索字串 IN 查找 FIND 字串
返回值: 找到返回 FIND 没有返回空

        2.5 $(filter PATTERN..., TEXT)

$(filter PATTERN..., TEXT)

功能:TEXT 中所有不符合 PATTERN 模式的单词被过滤
返回值: 空格分割的 TEXT 字串中所有符合模式 PATTERN 的字串

        2.6 $(filter-out PATTERN..., TEXT)

$(filter-out PATTERN..., TEXT)

功能:过滤掉 TEXT 满足 PATTERN 模式的单词
返回值: 空格分割的 TEXT 所有不符合模式 PATTERN 的字串

        2.7 $(sort LIST)

$(sort LIST)

功能: 给 LIST 字母以首字母为准进行排序(升序), 去掉重复的单词
返回值:空格分割的没有重复单词的字串

        2.8 $(word N, TEXT)

$(word N, TEXT)

功能:取 TEXT 中的第 N 个单词 
返回值:返回字串  TEXT 中的第 N 个单词

        2.9 $(wordlist S, E, TEXT)

$(wordlist S, E, TEXT)

功能: 取出 TEXT 按空格分割的第 S 到 E 的单词串

        2.10 $(words TEXT)

$(words TEXT)

功能:字串 TEXT 中单词数目

        2.11 $(firstword NAMES...)

$(firstword NAMES...)

功能: 取 NAMES 中的第一个单词

3.文件名处理函数

        3.1 $(dir NAMES...)

$(dir NAMES...)

功能:取 NAMES 中各个文件名的目录部分(最后一个 / 之前的部分),没有 / 表示当前目录

        3.2 $(notdir NAMES...)

$(notdir NAMES...)

功能:从 NAMES 取出非目录部分

        3.3 $(suffix NAMES...)

$(suffix NAMES...)

功能:从 NAMES 取出各个文件名的后缀

        3.4 $(basename NAMES...)

 

$(basename NAMES...)

功能:从文件名序列 NAMES 中取各个文件的前缀序列


        3.5 $(addsuffix SUFFIX, NAMES...)

$(addsuffix SUFFIX, NAMES...)

功能: 为 NAMES 中每个文件名添加后缀 SUFFIX

        3.6 $(addprefix PREFIX, NAMES...)

$(addprefix PREFIX, NAMES...)

功能:添加前缀 


        3.7 $(join LIST1, LIST2)

$(join LIST1, LIST2)

功能:把字串 LIST1 和 字串 LIST2 各单词进行对应连接

        3.8 $(wildcard PATTERN)

$(wildcard PATTERN)

功能:列出当前目录下所有符合模式 PATTERN 格式的文件名

4.make的控制函数

        4.1 $(error TEXT...)

$(error TEXT...)

功能:产生致命错误,提出 TEXT 信息给用户,并退出make的执行
返回值:空

        4.2 $(warning TEXT...)

$(warning TEXT...)

功能:不会导致致命错误不退出make,只是提示 TEXT...
返回值:空

5.其它函数

        5.1 foreach 函数

$(foreach VAR,  LIST, TEXT)

功能:循环函数
1.首先展开 VAR LIST 的引用
2.执行时把 LIST 中空格分割的单词依次取出赋值给变量 VAR
3.执行 TEXT 表达式
4.重复直到 LIST 的最后一个单词

返回值: 空格分割的多次表达式 TEXT 的计算结果

举例:

dirs := a b c d
                   VAR   LIST          TEXT
files := $(foreach dir, $(dirs), $(wildcard $(dir)/*))

第一次循环: $(dirs) 中的a 赋值给 dir 执行表达式    $(wildcard a/*)
第二次循环: $(dirs) 中的b 赋值给 dir 执行表达式    $(wildcard b/*)
第三次循环: $(dirs) 中的c 赋值给 dir 执行表达式    $(wildcard c/*)
第四次循环: $(dirs) 中的d 赋值给 dir 执行表达式    $(wildcard d/*)    

       5.2 if 函数

$(if CONDITION, THEN_PART, ELSE-PART)

功能: 如果 CONDITION 展开结果非空,则条件为真,返回 THEN-PART
      为假,返回 ELSE-PART

        5.3 call 函数

        call函数是唯一一个可以创建定制化参数函数的引用函数,使用这个函数可以实现用户自己定义的函数引用

$(call VARIABLE, PARAM, PARAM,...)

功能:把参数 PARAM 依次赋值给临时变量 $(1) $(2) 
    call 函数对参数数目没有限制
    执行时 VARIABLE 被展开为函数上下文有效的临时变量
返回值: 参数值 PARAM 依次替换 $(1) $(2)... 之后变量 VARIABLE 定义的表达式的计算值 

        5.4 value 函数

$(value VARIABLE)

功能:不对变量 VARIABLE 进行任何展开操作,直接返回变量 VARIBALE 的值
    VARIABLE 是变量名,一般不包含 $
返回值:变量 VARIBALE 定义的文本值(变量定义为递归展开式,不对引用展开)

        5.5 eval 函数

 

        5.6 origin 函数

$(origin VARIABLE)

功能: 函数 origin 查询参数  VARIABLE 的出处
返回值: 返回 VARIABLE 的定义方式

返回情况分类  变量 VARIABLE
undefined               变量没有被定义
default                 变量是默认定义(内嵌变量)
environment             变量是系统环境变量 make 没有使用 -e
enviroment override     变量是系统环境变量 make 使用 -e
file                    变量在某一个 makefile 中定义
command line            变量在命令行定义
override                变量在 makefile 文件中定义,并使用 overide 指示符声明
automatic               变量是自动化变量

        5.7 shell 函数

 6.make 命令行选项

 

 7. override 指示符

 8.系统环境变量

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值