2011-01-19 13 views

Respuesta

19
text := hello a b c 

null := 
space := ${null} ${null} 
${space} := ${space}# ${ } is a space. Neat huh? 

define \n 


endef 

$(error [$(subst ${ },${\n},${text})]) 
+0

¿Seguro de sus $ {} en la última línea –

+0

Sí, he definido esta macro en la línea 5 . $ {espacio} 'y' $ {} 'ambos funcionan bien aquí. – bobbogo

+0

No funcionó para mí –

3

es probablemente más fácil - y más limpio - a use la función shell de GNU Make con sed para hacer el reemplazo, en lugar de tratar de hacerlo completamente dentro de make.

STRING := foo bar baz 
SPLIT := $(shell echo "${STRING}" | sed -e 's/ /\n/g') 

O, ligeramente mejor, si su cáscara es bash en lugar del predeterminado sh:

STRING := foo bar baz 
SPLIT := $(shell sed -e 's/ /\n/g' <<< ${STRING}) 
+0

El único problema que encuentro con esto es que todavía usa comandos de shell, lo que significa que cumple con ARG_MAX, que fue mi problema en primer lugar. Pero esa es una buena solución para otros problemas que tuve. Gracias –

Cuestiones relacionadas