¿Eliminar elemento de una variable Makefile?
Tengo un makefile, que incluye varios otros makefiles, que a su vez se suman a una variable como esta:
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
Ahora deseo eliminar SomethingElse
de la variable VAR
. ¿Qué pongo en lugar de (...)
para hacer esto?
Estoy usando GNU Make, y una solución específica de GNU Make estará bien.
3 answers
Usted podría utilizar el filter-out
función de texto si está utilizando GNU Make.
OTHERVAR := $(filter-out SomethingElse,$(VAR))
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-11-04 09:13:59
Encima de la respuesta correcta arriba:
VAR = bla1 bla2 bla3 bla4 bla5
TMPVAR := $(VAR)
VAR = $(filter-out bla3, $(TMPVAR))
all:
@echo "VAR is: $(VAR)"
Salida:
VAR es: bla1 bla2 bla4 bla5
Tenga en cuenta que esto rompe toda la "recursividad" cuando se ejecuta filter-out, pero eso podría no importar en su caso.
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
2016-10-12 08:06:13
Como también tengo una situación similar, quiero agregar una nueva respuesta. En mi caso también había comas en la cadena variable y, más, quería eliminar la coma y la última palabra :
VAR = "bla1, bla2"
En este caso filter out no funciona (ni siquiera en las respuestas anteriores, cuando no hay comillas)
Mi solución es usar subst
:
VAR = "bla1, bla2"
TTT = , bla2
TMPVAR := $(VAR)
SUBST = $(subst $(TTT),, $(TMPVAR))
FILT = $(filter-out $(TTT), $(TMPVAR))
subst:
@echo "subst : $(SUBST)"
filter:
@echo "filter-out : $(FILT)"
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
2018-03-02 16:07:23