Makefile 函数

foreach

语法如下:

$(foreach var, list, text)

具体实例:

A = a b C
B = $(foreach f, $(A), $(f).o)

all:
	@echo B = $(B)

结果:
在这里插入图片描述

filter / filter-out

语法如下:

$(filter pattern..., text) 				# 在text中取出符合patten格式的值
$(filter-out pattern...., text)		# 在text中取出不符合patten格式的值

实例:

C = a b c d/
D = $(filter %/, $(C))
E = $(filter-out %/, $(C))

all:
	@echo D = $(D)
	@echo E = $(E)

结果:

D = d/
E = a b c

Wildcard

语法如下:

$(wildcard pattern) # pattern定义了文件名的格式, wildcard取出其中存在的文件。

这个函数 wildcard 会以 pattern 这个格式,去寻找存在的文件,返回存在文件的名字。

实例:(在该目录下创建三个文件:a.c b.c c.c)

files = $(wildcard *.c)
all:
	@echo files = $(files)

结果:

files = a.c c.c b.c

同时还可以利用其函数的特点来判断文件是否存在
实例:

files2 = a.c b.c c.c d.c e.c  abc
files3 = $(wildcard $(files2))

all:
	@echo files3 = $(files3)

结果:

files3 = a.c b.c c.c

patsubst

语法如下:

$(patsubst pattern, replacement, $(var))

patsubst 函数是从var变量中取出每一个值,如果这个符合patten格式,把它替换成 replacement 格式

实例:

files2 = a.c b.c c.c d.c e.c  abc
dep_files = $(patsubst %.c, %.d, $(files2))
all:
	@echo dep_files = $(dep_files)

结果:

dep_files = a.d b.d c.d d.d e.d abc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值