Czy ktoś wie jak zamienić wszystkie spacje w ciągu znaków do nowej linii w pliku Makefile (GNU make)Zamień spacje z nowej linii w makefile
10
A
Odpowiedz
19
text := hello a b c
null :=
space := ${null} ${null}
${space} := ${space}# ${ } is a space. Neat huh?
define \n
endef
$(error [$(subst ${ },${\n},${text})])
3
To pewnie łatwiej - i czystsze - do użyj funkcji GNU Make shell
z sed
, aby wykonać zamianę, zamiast próbować zrobić to całkowicie w ramach make
.
STRING := foo bar baz
SPLIT := $(shell echo "${STRING}" | sed -e 's/ /\n/g')
Lub nieco lepiej, jeśli powłoka jest bash
zamiast domyślnego sh
:
STRING := foo bar baz
SPLIT := $(shell sed -e 's/ /\n/g' <<< ${STRING})
+0
Jedynym problemem, jaki napotykam, jest to, że nadal używa poleceń powłoki, co oznacza, że jest zgodny z ARG_MAX, który był moim problemem na pierwszym miejscu. Ale to dobre rozwiązanie innych problemów, które miałem. Dzięki –
Czy na pewno jej $ {} w ostatnim wierszu –
Tak, zdefiniowane tego makra w wierszu 5 '$ {space}' i '$ {}' oba działają dobrze tutaj. – bobbogo
To nie działa dla mnie –