使用make命令删除前缀

44
有没有办法在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个回答

90

您可以通过以下方式去掉前导的a/

$(FILE:a/%=%)

请查看文本替换函数参考,以获得更多选项和详细信息。


25

既然您提到GNU make,为什么不直接:

$(FILE:a/%=%)

?


8
猜测这是因为上面有一个相同的答案...但显然是在同一分钟发布的!不幸:/ - Mark K Cowan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接