📜  patsubst 删除路径 (1)

📅  最后修改于: 2023-12-03 15:18:16.527000             🧑  作者: Mango

介绍 patsubst 删除路径

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 中非常有用的函数之一,用于字符串替换和格式化。