makefile处理多个文件并输出具有相似名称的转换文件

时间:2016-05-21 23:01:23

标签: makefile latex

说我有以下文件:

makefile
file1_ENG.yaml
file2_NL.yaml
template.tex

我希望从所有 yaml 文件中获得makefile输出 pdf 文件。

所以在这种情况下,2个pdf&#strong>同名,file1_ENG.pdf& file2_NL.pdf

目前我有:

TEX = pandoc
src = template.tex $(wildcard *.yml)
FLAGS = --latex-engine=xelatex

file1_ENG.pdf : $(src)
    $(TEX) $(filter-out $<,$^ ) --verbose -o $@ --template=$< $(FLAGS)

.PHONY: clean
clean :
    rm file1_ENG.pdf

不知道通配符是否有效..还有如何获取导入文件的名称并将它们用作输出文件名?

1 个答案:

答案 0 :(得分:2)

首先获取通配符:

src := $(wildcard *.yml)
$(info $(src)) # you can remove this once you see the wildcard works

然后构建所需pdf文件的列表:

TARGETS := $(patsubst %.yaml,%.pdf,$(src))

然后写一个static pattern rule来构建另一个:

TEX = pandoc
FLAGS = --latex-engine=xelatex
TEMPLATE := template.tex

$(TARGETS): %.pdf : %.yaml $(TEMPLATE)
    $(TEX) $< --verbose -o $@ --template=$(TEMPLATE) $(FLAGS)

clean规则:

.PHONY: clean
clean :
    rm *.pdf

all规则,首先出现:

all: $(TARGETS)