Makefile中的文件名操作函数
参考:https://seisman.github.io/how-to-write-makefile/functions.html#patsubst
dir
功能:获取文件 <names>
的目录。目录是指最后一个反斜杠( /
)之前的部分。如果没有反斜杠,那么返回 ./
。
$(dir <names...>)
返回:返回文件名 <names>
的目录部分。
示例: $(dir src/foo.c hacks)
返回值是 src/ ./
。
notdir
功能:从文件名序列 <names>
中取出非目录部分。非目录部分是指最後一个反斜杠( /
)之后的部分。
$(notdir <names...>)
返回:返回文件名序列 <names>
的非目录部分。
示例: $(notdir src/foo.c hacks)
返回值是 foo.c hacks
。
suffix
功能:从文件名序列 <names>
中取出各个文件名的后缀。
$(suffix <names...>)
返回:返回文件名序列 <names>
的后缀序列,如果文件没有后缀,则返回空字串。
basename
功能:从文件名序列 <names>
中取出各个文件名的前缀部分。
$(basename <names...>)
返回:返回文件名序列 <names>
的前缀序列,如果文件没有前缀,则返回空字串。
addsuffix
功能:把后缀 <suffix>
加到 <names>
中的每个单词后面。
$(addsuffix <suffix>,<names...>)
返回:返回加过后缀的文件名序列。
addprefix
功能:把前缀 <prefix>
加到 <names>
中的每个单词后面。
$(addprefix <prefix>,<names...>)
返回:返回加过前缀的文件名序列。
join
功能:把 <list2>
中的单词对应地加到 <list1>
的单词后面。如果 <list1>
的单词个数要比 <list2>
的多,那么, <list1>
中的多出来的单词将保持原样。如果 <list2>
的单词个数要比 <list1>
多,那么, <list2>
多出来的单词将被复制到 <list1>
中。
$(join <list1>,<list2>)
返回:返回连接过后的字符串。
示例: $(join aaa bbb , 111 222 333)
返回值是 aaa111 bbb222 333
。