说我有以下文件:
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
不知道通配符是否有效..还有如何获取导入文件的名称并将它们用作输出文件名?
答案 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)