makefile函数

测试场景:
创建test目录,目录下创建a.c和b.c两个文件。创建子目录sub,在子目录下创建sa.c和sb.c两个文件。

一.通用函数
1.wildcard
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。

src=$(wildcard *.c ./sub/*.c)
all:
        @echo $(src)
# bash 中执行 make
$ make
a.c b.c ./sub/sa.c ./sub/sb.c

二.字符串函数
1.模式字符串替换函数: $(patsubst <pattern>,<replacement>,<text>)

功能: 查找中的单词(单词以”空格”, “tab”, “换行”来分割) 是否符合 , 符合的话, 用 替代.

返回: 替换过的字符串

src=$(wildcard *.c ./sub/*.c)
obj=$(patsubst %.c,%.o,$(src) )
all:
        @echo $(obj)
# bash 中执行 make
$ make
a.o b.o ./sub/sa.o ./sub/sb.o

2.过滤函数: $(filter <pattern…>,<text>)

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

返回: 符合模式 <pattern> 的字符串

src=$(wildcard *.c ./sub/*.c)
fil=$(filter a.c, $(src))
all:
        @echo $(fil)
# bash 中执行 make
$ make
a.c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值