本章总结make函数的第二部分:文件名处理函数
1,获取目录函数:$(dir FILE_NAMES):截取FILE_NAMES中的文件路径,返回截取后的路径串
如:$(dir /home/tmp/yejing/rb_tree.c rb_tree.c)返回 /home/tmp/yejing/ ./
亦即返回最后一个斜杠之前的内容,如没有斜杠,返回./
2,获取文件名函数:$(notdir FILE_NAMES):截取FILE_NAMES中的文件名,返回截取后的文件名
如:$(notdir
dir /home/tmp/yejing/rb_tree.c rb_tree.c)返回rb_tree.c rb_tree.c
亦即与dir相反,返回最后一个斜杠之后的部分,如没有斜杠,直接返回输入的字串
3,前缀获取函数:$(basename FILE_NAMES):截取FILE_NAMES的前缀,返回截取后的各文件前缀
如:$(basename home/tmp1.c home/tmp2.c.c home/tmp3)返回home/tmp1 home/tmp2.c home/tmp3
需要注意的是,后缀以最后一个点(.)为准,如果没有后缀,返回原字串
注:这里其实解释为前缀并不准确,从函数名用basename而不是prefix就可以看出来,但是中文普遍翻译为前缀,为了不引起混 淆,所以这里也称前缀
4,前缀添加函数:$(addprefix PREFIX, FILES_NAMES):为FILES_NAMES中的每个文件添加一个PREFIX的前缀,返回添加前缀后的文件名序列
如:$(addprefix /home/yejing, tmp1 tmp2 tmp3)返回/home/yejing/tmp1 /home/yejing2 /home/yejing/tmp3
5,后缀截取函数:$(suffix FILE_NAMES):截取文件名序列FILE_NAMES中的文件名后缀,返回截取的后缀序列,没有返回空
如:$(suffix tmp1.c tmp2.cpp tmp3)返回.c .cpp
6,后缀添加函数:$(addsuffix SUFFIX,FILE_NAMES):将前缀SUFFIX添加到FILE_NAMES中的每个文件前面,返回添加后的文件名序列
如:$(addsuffix .c, tmp1 tmp2 tmp3)返回tmp1.c tmp2.c tmp3.c
7,文件名链接函数:$(join FILE_NAMES1, FILE_NAMES2):将FILE_NAMES2中的的第一个字串链接到FILE_NAMES1的第一个字串后面,以此类推,如果个数不匹配,则多余的原样返回
如:$(join tmp1 tmp2 tmp3, .c .cpp)返回tmp1.c tmp2.cpp tmp3
8,获取匹配模式文件名函数:$(wildcard PATTERN):返回当前目录想所有能匹配PATTERN的文件名,没有则返回空串
如:$(wildcard *.c)返回当前目录的所有以.c结尾的文件名