14
鑑於路徑的冒號分隔的列表,掌握GNU空格分隔的列表中進行很簡單:GNU做轉換空間,以冒號
CPATHS := /usr/bin/foo:/usr/bin/baz:/usr/bin/baz
SPATHS := $(subst :, ,$(CPATHS))
但是,我無法找到一個很好的方式,走相反的方向。下面的技巧不工作(至少如果sed的安裝),但我敢肯定會有解決這個只是用讓的內部功能的更好的方式。
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed 's/ \+/:/g' tmp; rm tmp)
我更願意用'空:=''然後空間:= $(空)$(空)'。只是更清楚一點,不依賴於副作用。但兩者都可以。 – MadScientist
很酷,謝謝。我想我會使用'SPACE:= $(eval)$(eval)'來獲得一個空間標記。我以爲'subst'是單獨操作單詞,因此看不到它們之間的空格。 – 5gon12eder
另一種選擇是使用'space:= $(subst ,,)'。 –