我有一个运行pandoc的Makefile。我想列出一个扩展列表:
reduceByKey
转换为如下所示的字符串:
PANDOC_EXTENSIONS = \
multiline_tables \
some_other_extension
然后将其作为命令行选项传递给pandoc,如下所示:
PANDOC_EXTENSION_LIST = +multiline_tables+some_other_extension
在几乎所有编程语言中这都是微不足道的,但是我无法弄清楚如何使用patsubst或subst函数来执行此操作,因为make确实没有列表。有什么想法吗?
答案 0 :(得分:2)
这里:
制作文件
PANDOC_EXTENSIONS = \
multiline_tables \
some_other_extension
$(foreach word,$(PANDOC_EXTENSIONS),$(eval PANDOC_EXTENSION_LIST := $(PANDOC_EXTENSION_LIST)+$(word)))
.PHONY: all
all:
echo $(PANDOC_EXTENSION_LIST)
运行方式如下:
$ make
echo +multiline_tables+some_other_extension
+multiline_tables+some_other_extension
正如所示,GNU make确实具有列表。由空格分隔的单词序列是一个列表。
答案 1 :(得分:1)
基于documentation中的示例:
empty:=
space:=$(empty) $(empty)
PANDOC_EXTENSIONS = \
multiline_tables \
some_other_extension
all:
@echo +$(subst ${space},+,${PANDOC_EXTENSIONS})
结果:
$ gmake
+multiline_tables+some_other_extension