通配符到变量到逗号连接的字符串

时间:2015-02-19 20:10:43

标签: makefile gnu-make

我正在使用makefile来控制软件管道。我需要将逗号分隔的目录列表作为参数传递,也就是

--dirs output/a,output/b,output/c

哪些是未知的。我想做点什么:

dirs = output/*
dirString = ",".join(dirs)

这可能吗?

2 个答案:

答案 0 :(得分:1)

shell用于执行命令,因此您可以调用任何可用于构造命令行的实用程序。例如,在类Unix系统上:

output/result: output/*
    echo $+ | sed 's/ /,/g' | xargs command > $@

答案 1 :(得分:1)

我发现 make 中做这些事情通常更好。 Noddy解析使,的处理比它应该更加棘手: - (

space :=
space += # $space is a space
comma := ,
comma-separate = $(subst ${space},${comma},$(strip $1))

list := a b  other     stuff  # trailing space
$(error [$(call comma-separate,${list})])

接受答案中的食谱显然是command $(call comma-separate,$+)