如何连接 Makefile 中的字符串?

How to concatenate strings in a Makefile?

我有一个运行 pandoc 的 Makefile。我要转扩展列表:

PANDOC_EXTENSIONS = \
        multiline_tables \
        some_other_extension

转换成如下所示的字符串:

PANDOC_EXTENSION_LIST = +multiline_tables+some_other_extension

然后将作为命令行选项传递给 pandoc,如下所示:

pandoc --from$(PANDOC_EXTENSION_LIST) ...

这在几乎任何编程语言中都是微不足道的,但我不知道如何使用 patsubst 或 subst 函数来做到这一点,因为 make 并没有真正的列表。有什么想法吗?

这里:

生成文件

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 确实有列表。一系列以空格分隔的单词是一个列表。

基于 documentation 中的示例:

empty:=
space:=$(empty) $(empty)
PANDOC_EXTENSIONS = \
        multiline_tables \
        some_other_extension

all:
    @echo +$(subst ${space},+,${PANDOC_EXTENSIONS})

结果:

$ gmake                                                                                                    
+multiline_tables+some_other_extension