如何连接 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
我有一个运行 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