我在理解为什么我的makefile中的一个模式规则工作得很好而不是另一个模式规则时遇到了问题,因为它们看起来与我非常相似。我尝试做的是使用makefile编译LaTeX文档,包括从Inkscape导出的SVG插图:
#Program paths
LATEX = latex
BIBTEX = bibtex
PDFLATEX = pdflatex
INKSCAPE_PATH = inkscape
#Options
LATEX_OPS=-interaction=nonstopmode
BIBTEX_OPS=
PDFLATEX_OPS=
INKSCAPE_OPS=-D -z --export-latex
#File paths
LATEX_PATH=.
PICS_PATH=/path/to/user\ name/pics
all: my_illustration.svg my_pdf_file.pdf
#Generate files for including SVG illustration
%.svg: $(PICS_PATH)/%.svg
$(INKSCAPE_PATH) $(INKSCAPE_OPS) --file="$^" --export-pdf="$(subst svg,pdf,$^)"
#Generate PDF
%.pdf: $(LATEX_PATH)/%.tex
-$(LATEX) $(LATEX_OPS) $^
-$(BIBTEX) $(BIBTEX_OPS) $(LATEX_PATH)/$(subst .pdf,,$@).aux
$(PDFLATEX) $(PDFLATEX_OPS) $^
$(PDFLATEX) $(PDFLATEX_OPS) $^
现在,单独生成my_pdf_file.pdf
工作正常,但SVG规则失败:
No rule to make target `my_illustration.svg', needed by `all'. Stop.
我做错了什么?提前谢谢。