GNU Make:如何加入列表并用分隔符分隔它?
问题描述:
我有这样的:GNU Make:如何加入列表并用分隔符分隔它?
FOO = foo1 foo2 ... fooN
,并希望得到参加所有这些字符串,并将其与分离,例如,COLONG:
foo1:foo2:foo3:...:fooN
如何在GNU做到这一点做,而无需使用外部UNIX工具?
答
请参阅下面的代码。
# 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))
答
你可以简单的用冒号替换空格:
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
FOO = foo1 foo2 ... fooN
FOO_LIST = $(subst $(SPACE),:,$(FOO))
FOO_LIST
是foo1:foo2:...:fooN
。
为什么不只是'FOO_LIST = $(subst $(SPACE),:,$(FOO))'? – Beta 2012-03-04 02:03:53
@贝塔好点。纠正。 – 2012-03-04 02:07:31