Svg 为什么一个模式规则有效,而另一个则无效?
我很难理解为什么makefile中的一个模式规则可以正常工作,但另一个却不行,因为它们看起来与我非常相似。我尝试使用makefile编译LaTeX文档,包括从Inkscape导出的SVG插图:Svg 为什么一个模式规则有效,而另一个则无效?,svg,makefile,latex,inkscape,Svg,Makefile,Latex,Inkscape,我很难理解为什么makefile中的一个模式规则可以正常工作,但另一个却不行,因为它们看起来与我非常相似。我尝试使用makefile编译LaTeX文档,包括从Inkscape导出的SVG插图: #Program paths LATEX = latex BIBTEX = bibtex PDFLATEX = pdflatex INKSCAPE_PATH = inkscape #Options LATEX_OPS=-interaction=nonstopmode BIBTEX_OPS= PDFLAT
#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.
我做错了什么?提前谢谢你。你必须比较一下。当您尝试
制作我的插图.svg
而不只是制作
时会发生什么?使用更简单的PICS\u路径时会发生什么情况?当您使我的插图.svg
依赖于/my\u pdf\u file.tex
?和$(PICS\u路径)/my\u插图.svg
存在时会发生什么?这难道不是目标生成pdf文件而不是svg文件的方法吗?所以,这不是“违反”了的规则2吗?您的svg配方并没有输出svg,请不要这样做。您可以定义另一个pdf模式,如$(PICS_PATH)/%.pdf:%.svg
@EtanReisner,如果该模式为true,请更改为true,然后重试。哦。对您不能在目标名称或先决条件名称中使用空格,因此会取得很大成功。那无疑是你的问题。正如博士所说,“不要那样做”。