14
Dato un elenco del colon-delimitato di percorsi, ottenendo un elenco delimitato da spazi con GNU Make è semplice:GNU Make convertire gli ambienti, a due punti
CPATHS := /usr/bin/foo:/usr/bin/baz:/usr/bin/baz
SPATHS := $(subst :, ,$(CPATHS))
Tuttavia, non sono riuscito a trovare un buon modo per andare nella direzione opposta. Il seguente hack funziona (almeno se è installato sed) ma sono abbastanza sicuro che ci sarà un modo migliore per risolvere questo problema usando solo le funzioni interne di Make .
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed 's/ \+/:/g' tmp; rm tmp)
Io preferisco usare 'vuota: =' 'poi spazio: = $ (vuoto) $ (vuoto)'. Solo un po 'più chiaro e non si basa su un effetto collaterale. Ma entrambi funzioneranno. – MadScientist
Cool, grazie. Penso che userò 'SPACE: = $ (eval) $ (eval)' per ottenere un token di spazio. Stavo pensando che 'subst' opera sulle parole individualmente e quindi non vede gli spazi tra loro. – 5gon12eder
Un'altra opzione è usare 'spazio: = $ (subst ,,)'. –