path - what - tutorial de django
GNU hacer convertir espacios a dos puntos (2)
Dada una lista de rutas delimitada por dos puntos, obtener una lista delimitada por espacios con GNU Make es sencillo:
CPATHS := /usr/bin/foo:/usr/bin/baz:/usr/bin/baz
SPATHS := $(subst :, ,$(CPATHS))
Sin embargo, no pude encontrar una buena manera de ir en la dirección opuesta. El siguiente truco funciona (al menos si está instalado sed ) pero estoy bastante seguro de que habrá una manera más agradable de resolver esto utilizando las funciones internas de Make .
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed ''s/ /+/:/g'' tmp; rm tmp)
La única parte difícil aquí es definir un espacio literal:
space :=
space +=
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(subst $(space),:,$(SPATHS))
La forma más corta de obtener un espacio literal sería a través de $() $()
. Así:
$(subst $() $(),:,$(CPATHS))
O, por brevedad:
_=$() $()
$(subst $(_),:,$(CPATHS))