• 【Makefile】Makefile中的常用函数简介


    1、 subst函数

    格式:$(subst <from>, <to>, <text>)
    功能:把字串<text>中的<from>字符串替换成<to>
    返回:函数返回被替换过后的字符串。

    示例:
      $(subst a,the,There is a big tree)
      把“There is a big tree”中的“a”替换成“the”,返回结果是“There is the big tree”。

    2、strip函数

    格式:$(strip <string> )
    功能:去掉<string>字串中开头和结尾的空字符,并将中间的多个连续空字符(如果有的话)合并为一个空字符。
    返回:返回被去掉空格的字符串值。
    说明:空字符包括 空格,tab等不可显示的字符

    示例:
    str1 := abc
    str2 := abc
    str3 := a     b     c

    all:
    @echo $(strip $(str1))
    @echo $(strip $(str2))
    @echo $(strip $(str3))

    输出结果:
    abc
    abc
    a b c

    3、filter函数
    格式:$(filter PATTERN…,TEXT)
    功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词。可以使用多个模式,存在多个模式时,模式表达式之间使用空格分割。 模式中一般需要包含模式字符“%”。
    返回:空格分割的“TEXT”字串中所有符合模式“PATTERN”的字串。
    说明:“filter”函数可以用来去除一个变量中的某些字符串。

    示例:
    sources := foo.c bar.c baz.s ugh.h
    foo: $(sources)
    cc $(filter %.c %.s,$(sources)) -o foo

    使用“$(filter %.c %.s,$(sources))”的返回值给 cc 来编译生成目标“foo”,函数返回
    值为“foo.c bar.c baz.s”

    4、patsubst函数
    格式:$(patsubst <pattern>,<replacement>,<text> )
    名称:模式字符串替换函数patsubst。
    功能:查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“”来转义,以“\%”来表示真实含义的“%”字符)
    返回:函数返回被替换过后的字符串。

    示例:
    $(patsubst %.c,%.o,x.c.c bar.c)

    把字串“x.c.c bar.c”符合模式[%.c]的单词替换成[%.o],返回结果是“x.c.o bar.o”

    5、filter函数
    格式:$(filter <pattern...>,<text> )
    名称:过滤函数filter。
    功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式。存在多个模式时,模式表达式之间使用空格分割。
    返回:返回符合模式<pattern>的字串。
    示例:
    sources := foo.c bar.c baz.s ugh.h
    foo: $(sources)
    cc $(filter %.c %.s,$(sources)) -o foo

    $(filter %.c %.s,$(sources))返回的值是“foo.c bar.c baz.s”。

    6、filter-out函数
    格式:$(filter-out <pattern...>,<text> )
    名称:反过滤函数filter-out。
    功能:以<pattern>模式过滤<text>字符串中的单词,去除符合模式<pattern>的单词。可以有多个模式。存在多个模式时,模式表达式之间使用空格分割。
    返回:返回不符合模式<pattern>的字串。
    示例:
    objects=main1.o foo.o main2.o bar.o
    mains=main1.o main2.o

    $(filter-out $(mains),$(objects)) 返回值是“foo.o bar.o”。

  • 相关阅读:
    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
    ps中的中英文对照
    2019.6.27 oracle复习 表空间
    pthon学习笔记 2020/4/6
    运维岗位发展方向
    sql server复习重点
    linux的shell script
    linux知识扫盲
    Android Studio 三、软件学习教程-知识点
    Android Studio 二、github项目下载 2019.8.23
  • 原文地址:https://www.cnblogs.com/utank/p/11799202.html
Copyright © 2020-2023  润新知