GNU Makefile 笔记 foreach wildcard patsubst

本文详细介绍了GNU Makefile中foreach函数的用法,如何进行循环操作,以及wildcard函数如何扩展通配符匹配文件。同时,还讲解了notdir函数去除目录部分的功能,以及 subst 和 patsubst 两个字符串处理函数的使用,提供了具体示例进行说明。
摘要由CSDN通过智能技术生成


1、foreach 函数 
这个函数是用来做循环用的,Makefile中 的foreach函数几乎是仿照于Unix标准Shell (/bin/sh)中的for语句,

或是C- Shell (/bin/csh)中的foreach语句而构建的。它的语法是: 

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

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

所以,<var>最好是一个变量名,<list>可以是一个表达式,而<text>中一般会使用 
<var>这个参数来依次枚举<list>中的单词。举个例子: 
    names := a b c d 
    files := $(foreach n,$(names),$(n).o) 

上面的例子中,$(name)中的单词会被挨个取出,并存到变量“n”中,“$(n).o”每次根据 
“$(n)”计算出一个值,这些值以空格分隔,最后作为foreach函数的返回,所以,$ 
 (files)的值是“a.o b.o c.o d.o”。 

注意,foreach中的<var>参数是一个临时的局部变量,foreach函数执行完后,参数 
<var>的变量将不在作用,其作用域只在foreach函数当中。 


2、 wildcard:  扩展通配符 例如将* 进行匹配

3notdir:  去除目录 类似于basename的用法

4、字符串处理函数

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

    名称:字符串替换函数——subst。 
    功能:把字串<text>中的<from>字符串替换成<to>。 
    返回:函数返回被替换过后的字符串。 
    示例: 
        $(subst ee,EE,feet on the street)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值