web-dev-qa-db-fra.com

Supprimer le préfixe avec make

Existe-t-il un moyen de supprimer un préfixe d'une chaîne (un chemin d'accès dans mon cas) dans make?

Par exemple, supposons que j'avais la chaîne:

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

Je veux supprimer le a/ Et me retrouver avec b/c.d b/e.f

J'ai essayé d'utiliser diverses combinaisons de dir, notdir et basename dans le GNU make manual , mais aucune ne semble fournir une bonne solution.

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

La seule façon que j'ai trouvée pour le faire jusqu'à présent est:

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

Ce qui est vraiment moche et de longue haleine. Ce dont j'ai vraiment besoin, c'est d'une sorte de fonction $(removeprefix ...). En supposant que je connaisse le préfixe (a/) À supprimer, cela peut-il être fait avec une sorte de manipulation de chaîne?

29
Lee Netherton

Vous pouvez supprimer un leader a/ avec

$(FILE:a/%=%)

Voir référence de la fonction de substitution de texte pour plus d'options et de détails.

58
Dan

Puisque vous dites GNU make, pourquoi pas seulement:

$(FILE:a/%=%)

?

17
MadScientist