Linux中Makefile文件的patsubst函数

问题:

       patsubst:模式字符串替换 我想问下什么是模式字符串啊??这是一道linux的知识。

回答:
            patsubst 应该是 makefile 里的一个函数 (如果你问的 patsubst 是其他语言里的,那就别看下面的了)

比方说你在 makefile 里定义了一个变量,内容是一堆 .c 文件的的名字,如

SRC = aaa.c  bbb.c  my.c his.c

你可以用 patsubst 根据 某种模式,将这些名字改成另外的,比如将这些 .c 文件的名字变成 .s 为后缀的名字:

NEW = $(patsubst "%.c", "%.s", ${SRC})

这样 NEW 这个变量中,就记录了 aaa.s  bbb.s  my.s his.s 这些后缀名为 .s 的文件。 上面命令中的模式字符串就是 "%.c" 或 "%.s", 而其中的 "%" 就是特殊的匹配字符,对于 aaa.c 这个字符串来说,  "%.c" 中的% 就匹配 aaa。这个很像我们在 bash 或者 dos 下用 *.c 匹配所有 .c 文件时候的那个 *
追问
我还有一点不太明白,这样的话,改成这样不行吗? NEW=$(subst .c, .s, ${SRC})效果不是一样的吗?啥时用%啥时不用啊?
回答
在我给的例子中,确实一样, 但是某些情况下,就不一样了。因为subst 会把每一个 .c 都替换成 .s, 而我上面例子中的 patsubst 只会把最末尾的替换。 给你一个例子,你自己体会一下就明白了 SRC = a.c b.c m.c.c all: echo $(patsubst "%.c","%.s",${SRC}) echo $(subst .c,.s, ${SRC}) 自己执行一下,就知道区别了。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值