GNU Make:如何加入列表并将其与分隔符分开?

eol*_*old 12 string join makefile concatenation separator

我有这个:

FOO = foo1 foo2 ... fooN
Run Code Online (Sandbox Code Playgroud)

并希望加入所有这些字符串并将其与例如colong分开:

foo1:foo2:foo3:...:fooN
Run Code Online (Sandbox Code Playgroud)

如何在不使用外部UNIX工具的情况下在GNU Make中执行此操作?

Eld*_*mov 18

请参阅下面的代码.

# 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))
Run Code Online (Sandbox Code Playgroud)

用法:

FOO = foo1 foo2 ... fooN

COLON_SEPARATED_FOO := $(call join-with,:,$(FOO))
Run Code Online (Sandbox Code Playgroud)


Ada*_*man 12

你可以简单地用冒号替换空格:

EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
FOO = foo1 foo2 ... fooN
FOO_LIST = $(subst $(SPACE),:,$(FOO))
Run Code Online (Sandbox Code Playgroud)

FOO_LISTfoo1:foo2:...:fooN.