当前位置: 首页 > news >正文

Makefile常用函数

目录

字符串替换函数:subst

模式字符串替换函数:patsubst

去空格函数 strip

查找字符串函数 findstring

过滤函数 filter

反过滤函数 filter-out

排序函数 sort

取目录函数 dir

取文件函数 notdir

取后缀函数 suffix

取前缀函数 basename

加后缀函数 addsuffix

wildcard函数

连接函数 join

循环函数 foreach

call函数

origin 函数

shell函数 


字符串替换函数:subst

$(subst <from>,<to>,<text>)

功能,把<text>中的<from>字符串替换成<to>

返回值:被替换过后的字符串

模式字符串替换函数:patsubst

$(patsubst <pattern>,<replacement>,<text>)

功能:按照指定的模式替换指定文件名的后缀

参数:

Pattern:模式字符串,指出要被替换文件名的后缀

Replacement:要替换成什么

Text:存储要被替换的原始数据

返回值:被替换过后的字符串

去空格函数 strip

$(strip <string>)

功能:去掉<string>字符串开头和结尾的空字符

返回值:被去掉空格的字符串

查找字符串函数 findstring

$(findstring <find>,<in>)

功能:在字符串中<in>查找<find>字符串

返回值:找到:返回<find>,否则返回空字符串

 

过滤函数 filter

$(filter <pattern…>,<text>)

功能:过滤指定模式的字符串

参数:

Pattern:模式字符串,要过滤出的字符串

Text:存储要被过滤的原始数据

返回值:符合< pattern >的字符串

反过滤函数 filter-out

$(filter-out <pattern…>,<text>)

功能:去除符合模式的字符串

返回值:不符合模式的字符串

排序函数 sort

$(sort <list>)

功能:给字符串<list>中的单词排序(升序)

返回值:排序后的字符串,会去掉相同的单词

 

取目录函数 dir

$(dir <names…>)

功能:从文件名序列<names>中取出目录部分,目录部分是指最后一个反斜杠(/)之前的部分

返回值:返回文件名序列<names>的目录部分, 如果没有反斜杠,返回./

​​​​​​​

取文件函数 notdir

$(notdir <names…>)

功能:从文件名序列<names>中取出非目录部分,非目录部分是指最后一个反斜杠(/)之后的部分

返回值:文件名序列<names>中取出的非目录部分

​​​​​​​ 

取后缀函数 suffix

$(suffix <names…>)

功能:从文件序列<names>中取出各个文件名的后缀

返回值:文件名序列<names>的后缀序列,如果文件没有后缀,则返回空字串

​​​​​​​ 

取前缀函数 basename

$(basename <names…>)

功能:从文件序列<names>中取出各个文件名的前缀

返回值:文件名序列<names>的前缀序列

加后缀函数 addsuffix

$(addsuffix <suffix>,<names…>)

功能:把后缀<suffix>加到<names>中的每个单词后面

返回值:加过后缀的文件名序列

wildcard函数

$(wildcard PATTERN ...)

功能:获取指定目录下指定类型的文件名

参数:指定某个目录,搜索该目录下指定类型的文件

返回值:以空格分割的指定目录下的所有符合条件的文件列表

连接函数 join

$(join <list1>,<list2>)

功能:把<list2>中的单词对应地加到<list1>的单词后面;如果<list1>的单词个数要比<list2>的多,那么,<list1>中的多出来的单词将保持原样;如果<list2>的单词个数要比<list1>多,那么,<list2>多出来的单词将被复制到<list2>中

返回值:连接过后的字符串

​​​​​​​ 

循环函数 foreach

$(foreach <var>,<list>,<text>)

把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text>所包含的表达式。每一次<text>会返回一个字符串,循环过程中,<text>的所返回的每个字符串会以空格分隔,最后当整个循环结束时,<text>所返回的每个字符串所组成的整个字符串(以空格分隔)将会是 foreach 函数的返回值。所以,<var>最好是一个变量名,<list>可以是一个表达式,而<text>中一般会使用<var>这个参数来依次枚举<list>中的单词。

​​​​​​​ 

call函数

$(call <expression>,<parm1>,<parm2>,<parm3>,…)

call函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达式,这个表达式中,你可以定义许多参数,然后你可以用call函数来向这个表达式传递参数

功能:在执行时,将参数parm一次赋值给临时变量“$(1)”,“$(2)”……,最后得到expression表达式的计算值

返回值:参数值parm依次替换"$(1)","$(2)"后,变量expression定义的表达式的计算值。

($(1) $(2) 有点类似于执行shell脚本中的第一个参数和第二个参数,$(0)为函数名)

origin 函数

$(origin <variable>)

并不操作变量的值,他只是告诉你你的这个变量是哪里来的

(<variable>是变量的名字,不应该是引用;所以最好不要在<variable>中使用“$”字符。)

Origin函数会以其返回值来告诉你这个变量的“出生情况”,下面,是origin函数的返回值:

undefined:如果<variable>从来没有定义过,origin函数返回这个值undefined。

default:如果<variable>是一个默认的定义,比如“CC”这个变量,

environment:如果<variable>是一个环境变量,并且当Makefile被执行时,“-e”参数没有被打开。

file:如果<variable>这个变量被定义在Makefile中。

command line:如果<variable>这个变量是被命令行定义的。

override:如果<variable>是被override指示符重新定义的。

automatic:如果<variable>是一个命令运行中的自动化变量。

shell函数 

 其参数为shell命令

http://www.lryc.cn/news/97461.html

相关文章:

  • mysql的一些知识整理
  • 修改密码和再次确认密码的js和element-ui的使用
  • 蓝桥杯专题-真题版含答案-【垒骰子_动态规划】【抽签】【平方怪圈】【凑算式】
  • kubernetes调试利器——kubectl debug工具
  • 浅谈es5如何保证并发请求的返回顺序
  • 深入浅出Pytorch函数——torch.squeeze
  • 【LeetCode】121.买卖股票的最佳时机
  • 【力扣】74. 搜索二维矩阵 <二分法>
  • Spring Task+Cron表达式
  • 你们公司的【前端项目】是如何做测试的?字节10年测试经验的我这样做的...
  • 华为战略方法论:BLM模型之关键任务与依赖关系
  • django的ORM模板的fake更新
  • 239.滑动窗口最大值
  • Redis基础原理
  • .NET 5 Web API 中JWT详细教程:保护你的Web应用
  • MyBatis-Plus自动填充
  • Dubbo服务提供者失效踢出原理解析
  • el-select下拉框处理分页数据,触底加载更多
  • 如何设计自动化测试脚本?一文5个步骤带你从0到1设计
  • PostgreSQL实战-数据库迁移部署
  • PHP数据库
  • Mybatis的基本操作--增删改查
  • Qt简单实现密码器控件
  • fpga_pwm呼吸灯(EP4CE6F17C8)
  • WPF实战学习笔记20-设置首页启动页
  • uniapp实现预约时间选择弹窗组件
  • opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解
  • 断路器分合闸速断试验
  • 【Redis】如何实现一个合格的分布式锁
  • 组件化开发复习