0
点赞
收藏
分享

微信扫一扫

Makefile中常用函数汇总

MaxWen 2022-04-05 阅读 99
linux

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 条评论