📅  最后修改于: 2023-12-03 15:18:16.527000             🧑  作者: Mango
patsubst
是 GNU Make 的一个函数,用于将一个字符串中的某些文本用另一个文本替换,并返回替换后的字符串。它有许多用途,其中之一是从文件名中删除路径。
patsubst
函数的语法如下:
$(patsubst pattern,replacement,text)
其中,pattern
是一个模式,在 text
中查找匹配的子串,replacement
是替换字符串,必须包含至少一个 %
,表示要替换的部分。在替换时,%
将替换为匹配 pattern
的部分。如果 replacement
中没有 %
,则无法完成替换。
假设我们有一个目录结构为 dir1/dir2/filename.ext
的文件。要从文件名中删除目录路径,可以使用以下代码:
filename := dir1/dir2/filename.ext
# 使用 / 作为分隔符
basename := $(lastword $(subst /, ,$(filename)))
# 或者使用 patsubst
basename := $(notdir $(filename))
这里,我们使用 subst
将路径中的斜杠替换为空格,并使用 lastword
取得最后一个字符串,即文件名部分。另一种方法是使用 notdir
,它将返回路径中的最后一个文件名,而不需要使用 subst
。这两种方法都会将路径中的所有目录部分删除,只保留文件名和扩展名部分,如果有的话。
使用 patsubst
函数可以很容易地从文件名中删除路径部分。它是 GNU Make 中非常有用的函数之一,用于字符串替换和格式化。