Makefile之几个常用函数(addprefix、addsuffix、if、wildcard、filter、call)

介绍几个常用的makefile函数

  1. addprefix.
    $(addprefix <prefix>, <name1 name2 ...>)

    功能:把<prefix>加到name序列中的每一个元素前面。

    result = $(addprefix %., c cpp)
    test:
        @echo $(result)

    输出:%.c %.cpp

  2. addsuffix 用法与addprefix相同,只是一个是前缀,一个是后缀。
  3. if.
    $(if <condition>, <then-part>,<else-part>)

    功能:<condition>参数是 if的表达式,如果其返回的为非空字符串,那么这个表达式就相当于返回真,于是,<then-part>会被计算,返回计算结果字符串;否则<else- part>会被计算,返回计算结果字符串。<else-part>可以省略。

    suffix := 
    result1 := $(if $(suffix), $(addprefix %.,$(suffix)), %)
    
    suffix := c cpp
    result2 := $(if $(suffix), $(addprefix %.,$(suffix)), %)
    
    test:
        @echo result1 is $(result1)
        @echo result2 is $(result2)

    输出:

    result1 is %
    result2 is %.c %.cpp
  4. wildcard.
    $(wildcard <pattern1 pattern2 ...>)

    功能:展开pattern中的通配符

    $(wildcard src/*)

    输出:得到src目录下的文件列表

  5. filter.
    $(filter <pattern1 pattern2 ...>, <text>)

    功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式。

    $(filter %.c %.cpp, $(wildcard src/*))

    输出:src目录下所有后缀是.c和.cpp的文件序列。

  6. call.
    $(call <expression>,<param1>,<param2>,...)

    功能:<expression>中有$(1),$(2)这种占位符,call函数使用<param1>,<param2>来替换$(1),$(2),并计算表达式的值,返回结果字符串。

    listfile  = $(filter $(if $(2),$(addprefix %.,$(2)),%), \
                        $(wildcard $(addsuffix $(SLASH)*, $(1))))
    
    list_cc = $(call listfile, src, c cpp)

    输出:src目录下所有后缀是.c和.cpp的文件序列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值