38

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

例如,假设我有字符串:

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

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

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

$(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/要删除的前缀 ( ),这可以通过某种字符串操作来完成吗?

4

2 回答 2

76

你可以a/

$(FILE:a/%=%)

有关更多选项和详细信息,请参阅文本替换功能参考

于 2013-10-24T16:28:15.397 回答
19

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

$(FILE:a/%=%)

?

于 2013-10-24T16:28:24.400 回答