Makefile中常用函数汇总

foreach

$(foreach var, text, commond)

var:局部变量
text:文件列表,空格隔开,每一次取一个值赋值为变量var
commond:对var变量进行操作,每次操作结果都会以空格隔开,最后返回空格隔开的列表

subst

$(subst FROM,TO,TEXT)

将字符串TEXT中的FROM替换为TO,返回替换后的新字符串
举例:

SRCS = a.c b.c c.c
OBJS = $(subst .c,.o,$(SRCS))

OBJS的值为 a.o b.o c.o

patsubst

$(patsubst PATTERN,REPLACEMENT,TEXT)

将TEXT中符合模式PATTERN的单词替换为REPLACEMENT
举例:

SRCS = a.c b.c c.c
OBJS = $(patsubst %.c,%.o,$(SRCS ))

OBJS的值为 a.o b.o c.o

SRCS = a.c b.c c.c
OBJS = $(patsubst %.c,ABC,$(SRCS ))

OBJS的值为 ABC ABC ABC

strip

$(strip TEXT)

去掉字符串TEXT开头和结尾的空字符,并将字符串中的多个连续空字符合并为一个空字符。
举例:

TEXT =  a   b            c	  
STR = $(strip TEXT)

STR的值为a b c

findstring

$(findstring FIND,TEXT)

在字符串TEXT中,查找FIND,找到则返回FIND,否则返回空。
举例:

TEXT = a b ccc  
RST = $(findstring a,TEXT)

RST的值为a

TEXT = a b ccc  
RST = $(findstring d,TEXT)

RST的值为空

filter

$(filter PATTERN, TEXT)

保留TEXT中符合PATTERN模式的字符串
举例:

SRCS = a.c b.c a.h b.h c.so
RST = $(filter %.c, $(SRCS))

RST的值为a.c b.c

filter-out

$(filter-out PATTERN, TEXT)

反过滤函数,保留不符合PATTERN模式的字符串
举例:

SRCS = a.c b.c a.h b.h c.so
RST = $(filter-out %.c, $(SRCS))

RST的值为a.h b.h c.so

sort

$(sort TEXT)

排序函数,给TEXT中单词以首字母为准进行排序,并去掉重复的单词
举例:

SRCS = the biggest fear is fear itself
RST = $(sort $(SRCS))

RST的值为:biggest fear is itself the

word

$(word N, TEXT)

取字符串TEXT中第N个单词,N从1开始
举例:

SRCS = the biggest fear is fear itself
RST = $(word 2, $(SRCS))

RST的值为biggesst

wordlist

$(word M, N, TEXT)

取字符串TEXT中第M到底N的单词
举例:

SRCS = the biggest fear is fear itself
RST = $(wordlist 2,3, $(SRCS))

RST的值为biggesst fear

words

$(words TEXT)

统计单词数目
举例:

SRCS = the biggest fear is fear itself
RST = $(words $(SRCS))

RST的值为 6

firstword

$(firstword TEXT)

取字符串TEXT中的第一个单词
举例:

SRCS = the biggest fear is fear itself
RST = $(firstword $(SRCS))

RST的值为 the

dir

$(dir NAMES)

从文件名序列NAMES中取出文件名的目录部分(文件名之前的部分)
举例:

SRCS = a.c a.h  code/test/b.c
RST = $(dir $(SRCS))

RST的值为./ ./ code/test/

notdir

$(notdir NAMES)

从文件名序列NAMES中取出文件名
举例:

SRCS = a.c a.h  code/test/b.c
RST = $(notdir $(SRCS))

RST的值为 a.c a.h b.c

suffix

$(suffix NAMES)

从文件名序列NAMES中取出各个文件名的后缀。
举例:

SRCS = a.c a.h abc
RST = $(suffix $(SRCS))

RST的值为.c .h

basename

$(basename NAMES)

从文件名序列NAMES中取出文件名的前缀
举例:

SRCS = a.c a.h  code/test/b.c
RST = $(basename $(SRCS))

RST的值为 a a code/test/b

addsuffix

$(addsuffix SUFFIX,NAMES)

向文件名序列NAMES中各个文件名添加后缀SUFFIX
举例:

SRCS = a b abc
RST = $(addsuffix .c,$(SRCS))

RST的值为a.c b.c abc.c

addprefix

$(addprefix PREFIX,NAMES)

向文件名序列NAMES中各个文件名添加前缀PREFIX
举例:

SRCS = a.c b.c abc.c
RST = $(addprefix src/,$(SRCS))

RST的值为src/a.c src/b.c src/abc.c

join

$(join LIST1,LIST2)

将字符串LIST1与LIST2各单词对应拼接
举例:

RST = $(join a b,.c .o)

RST的值为a.c b.o

wildcard

$(wildcard PATTERN)

获取当前目录下所有符合模式PATTERN格式的文件名
举例:
$(wildcard *.c)
返回当前目录下所有.c源文件列表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值