14
otrzymali listę rozdzielonych dwukropkami ścieżek, coraz listę oddzielonych znakiem spacji z GNU make jest prosta:GNU make Konwersja spacji aby Dwukropki
CPATHS := /usr/bin/foo:/usr/bin/baz:/usr/bin/baz
SPATHS := $(subst :, ,$(CPATHS))
Jednak nie mogłem znaleźć dobry sposób, aby idź w przeciwnym kierunku. Następujący hack działa (przynajmniej jeśli sed jest zainstalowany), ale jestem pewien, że będzie lepszy sposób na rozwiązanie tego problemu przy użyciu tylko wewnętrznych funkcji Make.
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed 's/ \+/:/g' tmp; rm tmp)
wolę używać 'pusty: =' 'następnie przestrzeń: = $ (pusty) $ (pusty)'. Tylko odrobinę wyraźniejsze i nie polegające na efektach ubocznych. Ale oba będą działać. – MadScientist
Fajnie, dzięki. Myślę, że użyję 'SPACE: = $ (eval) $ (eval)', aby uzyskać token miejsca. Myślałem, że 'subst' działa indywidualnie na słowa i dlatego nie widzi spacji między nimi. – 5gon12eder
Inną opcją jest użycie 'space: = $ (subst ,,)'. –