博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile文本处理函数
阅读量:3520 次
发布时间:2019-05-20

本文共 2500 字,大约阅读时间需要 8 分钟。

$(subst FROM,TO,TEXT)

         函数名称:字符串替换函数

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

         返回值:替换后的新字符串

                   $(subst ee,EE,feet on the stree) //替换“feet on the street“中的ee为EE。结果得到字符串”fEEt on the strEEt”

$(patsubst PATTERN,REPLACEMENT,TEXT)

         函数名称:模式替换函数

         函数功能:搜索TEXT中以空格分开的单词,将符合模式PATTERN替换为REPLACEMENT。参数PATTERN中可以用模式通配符%来表示一个单词中的诺干字符。如果参数REPLACEMENT中也包含一个%,那么REPLACEMENT中的”%”将使PATTERN中的那个”%”所代表的字符串。而且只有第一个%作为模式字符来处理,之后出现的不再作为模式字符(作为一个字符)。转义字符可以避免%不作为为模式字符

         返回值:替换后的新字符串

         函数说明:参数TEXT单词之间的多个空格在处理时被合并为一个空格,并忽略前导和结尾空格

                   $(patsubst %.c,%.o,x.c.c bar.c)

                  替换以.o结尾的字符,函数的返回结果就为”x.c.o bar.o”

$(strip STRING)

         函数名称:去空格函数

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

         返回值:无前导和结尾空字符,使用单一空格分隔的多个单词的字符串

         Strip函数常用语条件判断语句的表达式中,确保表达式比较可靠和健壮

$(findstring FIND,IN)

         函数名称:查找字符串函数

         函数功能:在字符串IN中查找FIND字符串

         返回值:如果在IN中找到FIND子字符串,则返回FIND,否则返回空

         函数说明:收索是严格的文本匹配

                   $(findstring a,a b c)     返回 a

                   $(findstring a,b c)       返回 空字符

$(filter PATTERN…,TEXT)

         函数名称:过滤函数

         函数功能:过滤掉字符串TEXT中所有不符合模式PATTERN的单词,保留所有符合此模式的单词。模式中一般需要包含字符%,存在多个模式时,模式之间用空格分隔

         返回值:空格分隔的TEXT字符串中所有符合模式PATTERN的字符串

         函数说明:filter可以用来去除一个变量中的某些字符串。

                   source := foo.c bar.c baz.s ugh.h

                   foo: $(source)

                            cc $(filter %.c %s,$(source)) -o foo       此句话等于 cc foo.c bar.c baz.s -o foo 剔除掉了不符合.c,.s 的文件

$(filter-out PATTERN…,TEXT)

         函数名称:反过滤函数

         函数功能:和filter相反,剔除掉TEXT中所有符合模式PATTERN的单词

         返回值:空格分隔的所有不符合模式PATTERN的字符串

                   objects = main1.o foo.o main2.o bar.o

                   mains = main1.o main2.o

                   $(filter-out $(mains),$(objects))     去除了变量object中mains定义的字符串(文件名)的功能,返回”foo.o bar.o”

$(sort LIST)

         函数名称:排序

         函数功能:给字符串LIST中的单词以首字母为主进行排序,并去掉重复的单词

         返回值:空格分隔的没有重复单词的字符串

                   $(sort foo bar lose foo)

                   返回值为”bar foo lose”    升序排,去掉重复单词

$(word N,TEXT)

         函数名称:取单词函数

         函数功能:取字符串TEXT中第N个单词(N的值从1开始)

         返回值:返回字符串TEXT中第N个单词

         函数说明:N大雨字符串TEXT中单词数目,返回空字符串。如果N为0,出错!!

                   $(word 2,foo bar baz)        返回bar

$(wordlist S,E,TEXT)

         函数名称:取字符串函数

         函数功能:从字符串TEXT中去除从S开始到E打单词串。S和E表示单词在字符串中位置的数字

         返回值:TEXT中从第S到E的单词串

         函数说明:“S”和“E”都是从1开始的数字。当“S”比“TEXT”中的字数大时,返回空。如果“E”大于“TEXT”字数,返回从“S”开始,到“TEXT”结束的单词串。如果“S”大于“E”,返回空。

                   $(wordlist 2,3,foo bar baz)   返回”bar baz”

$(words TEXT)

         统计TEXT字符串的单词个数,返回值即为单词个数

                   $(words,foo bar)  返回值为2.字符串TEXT最后一个单词就是$(word $(words TEXT),TEXT)

$(firstword NAMES…)

         函数名称:取首单词函数

         功能:取字符串“NAMES…“的第一个单词

         返回值:返回NAMES的第一个单词

                   $(firstword foo bar)

                   返回值为foo。Firstword的实现功能等同于$(word 1,NAMES…)

         下面我们来看一个实际应用:Makefile中可以使用VPATH来指定搜索路径。对于源代码所包含的头文件的搜索路径需要使用gcc的-l参数指定目录来实现。VPATH罗列的目录是用:分隔的

         ……

         VPATH = src:../includes

         override CFLAGS += $(patsubst %,-l%,$(subst :, ,$(VPATH)))  à CFLAGS += -lsrc -l../includes

         首先$(subst :, ,$(VPATH))将VPATH中的:用空格代替。$(patsubst %,-l%,src ../includes) 在patsubst函数中,模式和替换模式中都有%时,两个%表示同样的值。而模式直接使用%表示无论啥都匹配,全匹配

转载地址:http://xfhqj.baihongyu.com/

你可能感兴趣的文章
西南科技大学OJ题 有向图的最大出度计算1059
查看>>
西南科技大学OJ题 带权有向图计算1063
查看>>
oracle主键自增触发器编写
查看>>
String与StringBuilder与StringBuffer三者的差别
查看>>
各种IO流之间的关系和区别
查看>>
SSM如何实现上传单图片
查看>>
SSM环境下java如何实现语音识别(百度语音识别版)
查看>>
ajax方法参数的用法和他的含义
查看>>
数据库基础技巧及用法
查看>>
实用方法:无request参数时获得当前的request的方法
查看>>
JS操作数组常用实用方法
查看>>
java实现MD5多次进行加密加盐操作
查看>>
springboot实现CAS的server服务器端的搭建,并实现链接mysql数据库,自定义加密算法
查看>>
Python超详细的安装教程
查看>>
小甲鱼Python第一讲(我和Python的第一次亲密接触)
查看>>
小甲鱼Python第三讲(小插曲之变量和字符串)
查看>>
小甲鱼Python第十一讲(一个打了激素的数组2)
查看>>
小甲鱼Python第十三讲(戴上了枷锁的列表)
查看>>
小甲鱼Python第十四讲(各种奇葩的内置方法)
查看>>
小甲鱼Python第十五讲(格式化)
查看>>