现在的位置: 首页 > 综合 > 正文

make 中的函数

2013年10月27日 ⁄ 综合 ⁄ 共 2113字 ⁄ 字号 评论关闭
make 函数

A.字符串替换和分析函数:
1.subst 替换
用法:$(subst from,to,text) : 将text中的from 替换为to 

eg: $(subst ee,EE,feet on the street)  结果:'fEEt on the strEEt'


2.patsubst 带正则的替换
用法:
$(patsubst pattern,replecement,text) 

eg: $(patsubst %.c,%.o,x.c.c bar.c)   结果: 'x.c.o bar.o'


3.strip 去空格
用法:$(strip string)  : 将string 中前导和后缀空格去掉,中间多个空格和为一个。

eg: $(strip a b c ) 结果: 'a b c'


4.findstring 字符串查找
用法:$(findstring find,in) 在in中查找find,若找到返回find否则返回空
eg: $(findstring a,a b c)        结果:'a'

     $(findstring a,b c)           结果:''


5.filter 正则过滤
用法:$(filter pattern...,text) 将text中符合pattern的过滤出来。
eg: sources := foo.c bar.c baz.s ugh.h 
    foo: $(sources) 

        cc $(filter %.c %.s,$(sources)) -o foo  //cc 命令生成foo 不用ugh.h文件


6.filter-out 正则反过滤 和filter的结果正好相反
用法: $(filter-out pattern...,text) 
eg: objects=main1.o foo.o main2.o bar.o 
    mains=main1.o main2.o 

    $(filter-out $(mains),$(objects)) 结果: 'foo.o bar.o'


7.sort 排序 
用法: $(sort list) 按字典顺序排序,移除重复的。

eg:  $(sort foo bar lose) 结果: 'bar foo lose'


8.word 取词
用法: $(word n,text) 取text 中第n个词

eg: $(word 2, foo bar baz) 结果: 'bar'


9.wordlist 列表取词
用法: $(wordlist m,n,text) 从text中取从第m到第n个词

eg: $(wordlist 2,3,foo bar baz)    result is : 'bar baz'


10.words 
用法: $(words text)  返回text包含的词的个数

eg:    $(word $(words text),text) 返回text中最后一个词


11.firstword 
用法: $(firstword names...) 取第一个词

eg: $(firstword foo bar) result is : 'foo'


12.lastword 
用法: $(lastword names...) 取最后一个词

eg: $(lastword foo bar ) result is : 'bar'


B.处理文件名的函数


13.dir 提取目录部分
用法: $(dir names)  提取每个文件名的目录部分,以'/'结束。如果文件名不带'/'则目录部分视为'./'.

eg: $(dir src/foo.c hacks)  结果 :'src/ ./'


14.notdir 去掉目录部分
用法: $(notdir names) 

eg: $(dir src/foo.c hacks) 结果 :'foo.c hacks'


15.suffix 
用法: $(suffix names...) : 提取文件名后缀

eg: $(suffix src/foo.c src-1.0/bar.c hacks) 结果 :'.c .c'


16.basename 
用法: $(basename names...) : 提取文件名除后缀外的部分,suffix 相反。

eg: $(basename src/foo.c src-1.0/bar hacks)    结果 :'src/foo src-1.0/bar hacks'


17.addsuffix 
用法: $(addsuffix suffix,names...) 添加后缀

eg: $(addsuffix .c,foo bar)   结果 :'foo.c bar.c'


18.addprefix 添加前缀
$(addprefix prefix,names...) 

eg: $(addprefix src/,foo bar)  结果 :'src/foo src/bar'


19.join
$(join list1,list2)

eg: $(join a b,.c .o)  结果:'a.c b.o'


20.wildcard 通配符
$(wildcard patterns) :
eg: $(wildcard *.c) means all .c files.
    objects := $(patsubst %.c,%.o,$(wildcard *.c))
    foo:$(objects)

        cc -o foo $(objects) 


21.realpath 

$(realpath names...) : 返回绝对路径,不包含.或..或重复的/或者链接。


22 abspath
$(abspath names...) :与realpath 相似,只是保留链接。

抱歉!评论已关闭.