如何在Makefile中连接字符串?

时间:2018-11-02 17:42:56

标签: makefile gnu-make

我有一个运行pandoc的Makefile。我想列出一个扩展列表:

reduceByKey

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

PANDOC_EXTENSIONS = \
        multiline_tables \
        some_other_extension

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

PANDOC_EXTENSION_LIST = +multiline_tables+some_other_extension

在几乎所有编程语言中这都是微不足道的,但是我无法弄清楚如何使用patsubst或subst函数来执行此操作,因为make确实没有列表。有什么想法吗?

2 个答案:

答案 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