用make删除前缀

时间:2013-10-24 16:23:06

标签: makefile gnu-make

有没有办法在make中删除字符串中的前缀(在我的例子中是路径名)?

举个例子,假设我有字符串:

FILES = a/b/c.d a/b/e.f

我想删除a/,并留下b/c.d b/e.f

我尝试使用GNU make manual中的dirnotdirbasename的各种组合,但似乎都没有提供一个很好的解决方案。

$(dir $(FILE))      # a/b a/b
$(notdir $(FILE))   # c.d e.f
$(basename $(FILE)) # a/b/c a/b/e

到目前为止,我发现这样做的唯一方法是:

$( join $(basename $(dir $(FILE))), $(notdir $(FILE)) )

这真的很丑陋而且啰嗦。我真正需要的是某种$(removeprefix ...)函数。假设我知道要删除的前缀(a/),可以通过某种字符串操作来完成吗?

2 个答案:

答案 0 :(得分:53)

您可以使用

删除前导a/
$(FILE:a/%=%)

有关更多选项,请参阅text substitution function reference&的信息。

答案 1 :(得分:16)

既然你说GNU make,为什么不呢:

$(FILE:a/%=%)