Is there a way to remove a prefix from a string (a pathname in my case) in make
?
As an example, suppose I had the string:
FILES = a/b/c.d a/b/e.f
I want to remove the a/
, and be left with b/c.d b/e.f
I have tried using various combinations of dir
, notdir
and basename
from the GNU make manual, but none seem to provide a nice solution.
$(dir $(FILE)) # a/b a/b
$(notdir $(FILE)) # c.d e.f
$(basename $(FILE)) # a/b/c a/b/e
The only way I've found to do this so far is:
$( join $(basename $(dir $(FILE))), $(notdir $(FILE)) )
Which is really ugly and long-winded. What I really need is some kind of $(removeprefix ...)
function. Assuming that I know the prefix (a/
) to be removed, can this be done with some kind of string manipulation?
You can strip off a leading a/
with
$(FILE:a/%=%)
See the text substitution function reference for more options & details.