14
Dada una lista de colon delimitado de caminos, obteniendo una lista delimitada por espacios con GNU Make es sencillo:GNU Make convertir espacios a dos puntos
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 hack no funciona (al menos si está instalado sed) pero estoy bastante seguro de que habrá una manera más agradable de resolver esto usando Funciones internas de.
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed 's/ \+/:/g' tmp; rm tmp)
Yo prefiero usar 'vacío: =' 'continuación, el espacio: = $ (vacío) $ (vacío)'. Simplemente un poco más claro y no depende de un efecto secundario. Pero ambos funcionarán. – MadScientist
Genial, gracias. Creo que usaré 'SPACE: = $ (eval) $ (eval)' para obtener un token de espacio. Estaba pensando que 'subst' opera en las palabras individualmente y por lo tanto no ve los espacios entre ellas. – 5gon12eder
Otra opción es usar 'space: = $ (subst ,,)'. –