web-dev-qa-db-ja.com

makeでプレフィックスを削除

makeの文字列(私の場合はパス名)からプレフィックスを削除する方法はありますか?

例として、私は文字列を持っていたと仮定します:

_FILES = a/b/c.d a/b/e.f
_

_a/_を削除し、_b/c.d b/e.f_のままにしておきたい

GNU make manualdirnotdirおよびbasenameのさまざまな組み合わせを使用してみましたが、どれもNiceソリューションを提供していないようです。

_$(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/_)がわかっていると仮定すると、これは何らかの文字列操作で行うことができますか?

29
Lee Netherton

先頭のa/を削除するには

$(FILE:a/%=%)

オプションと詳細については、 テキスト置換関数リファレンス を参照してください。

58
Dan

あなたはGNU makeと言うので、なぜだけではありませんか:

$(FILE:a/%=%)

17
MadScientist