Eliminar prefijo con make


¿Hay alguna manera de eliminar un prefijo de una cadena (un nombre de ruta en mi caso) en make?

Como ejemplo, supongamos que tengo la cadena:

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

Quiero quitar el a/, y quedar con b/c.d b/e.f

He intentado usar varias combinaciones de dir, notdir y basename del GNU make manual, pero ninguno parece proporcionar una buena solución.

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

La única manera que he encontrado para hacer esto hasta ahora es: {[12]]}

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

Que es realmente feo y largo aliento. Lo que realmente necesito es algún tipo de función $(removeprefix ...). Suponiendo que conozco el prefijo (a/) a eliminar, ¿se puede hacer esto con algún tipo de manipulación de cadenas?

Author: Lee Netherton, 2013-10-24

2 answers

Usted puede quitar un líder a/ con

$(FILE:a/%=%)

Vea la referencia de la función de sustitución de texto para más opciones y detalles.

 49
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 16:28:15

Ya que dices GNU make, ¿por qué no solo:

$(FILE:a/%=%)

?

 14
Author: MadScientist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 16:28:24