GNU Make: как присоединиться к списку и отделить его с разделителем?

У меня есть это:

FOO = foo1 foo2 ... fooN

и хотите присоединиться ко всей этой строке и отделить ее, например, colong:

foo1:foo2:foo3:...:fooN

Как это сделать в GNU Make, без использования внешних инструментов UNIX?

Ответ 1

См. код ниже.

# A literal space.
space :=
space +=

# Joins elements of the list in arg 2 with the given separator.
#   1. Element separator.
#   2. The list.
join-with = $(subst $(space),$1,$(strip $2))

Использование:

FOO = foo1 foo2 ... fooN

COLON_SEPARATED_FOO := $(call join-with,:,$(FOO))

Ответ 2

Вы можете просто заменить пробелы двоеточием:

EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
FOO = foo1 foo2 ... fooN
FOO_LIST = $(subst $(SPACE),:,$(FOO))

FOO_LIST foo1:foo2:...:fooN.