我在Makefile变量中有文件列表。我用它来调用几个隐式规则。
简而言之:
CHAPTERS_FOLDER = chapters
CHAPTERS := $(CHAPTERS_FOLDER)/lesson1.Md $(CHAPTERS_FOLDER)/lesson2.Md [...] $(CHAPTERS_FOLDER)/lesson23.Md
$(CHAPTERS_FOLDER)/%.Md : %.xml
mkdir -p $(CHAPTERS_FOLDER)
pandoc -f docbook -t markdown_strict $< -o $@
$(CHAPTERS_FOLDER)/%.Md : %.odt
mkdir -p $(CHAPTERS_FOLDER)
pandoc -t markdown_strict $< -o $@
是否有一种方法不必手动将CHAPTERS_FOLDER
添加到CHAPTER
中的每个项目?有点像笛卡尔笛卡尔积或其他东西...
是否有更好的方法来设计这些规则来构建文件?
为什么不只使用addprefix
?
CHAPTERS = lesson1.Md lesson2.Md lesson3.Md ...
CHAPTER_TARGETS = $(addprefix $(CHAPTERS_FOLDER)/,$(CHAPTERS))
阅读file name functions上手册的前几段,以了解它们对文件名而不是单个文件名的[[列表起作用。