我知道 LatexMk,但无法将其安装在我想要运行的计算机上pdflatex
,因此我需要编写一个 Makefile,其中包含哪些%.pdf
文件是依赖的目标%.tex
以及正在输入的*.tex
文件%.tex
。为此,我写了以下内容:
%.pdf : %.tex $(shell perl -lne 'print "$$1\n" if /\\input{([\w-]+\.tex)}/' %.tex)
现在,我测试了正则表达式,它似乎工作正常,但最后%.tex
没有正确传递,运行make output.pdf
给了我:
Can't open %.tex: No such file or directory.
我怎样才能传递%.tex
给$(shell)
命令?
我正在使用 GNU make。
答案1
也许您想要做的事情可以通过创建一个列出依赖项的文件来更好地解决,然后您可以include
从 Makefile 中创建该文件。这是 C 和 C++ makefile 中的常见模式。
SOURCES=foo.tex bar.tex
all: $(SOURCES:.tex=.pdf)
%.dep: %.tex
perl -lne 'print "$*.pdf: $$1\n" if /\\input{([\w-]+\.tex)}/' <$< >$@
include $(SOURCES:.tex=.dep)
推荐阅读:自动生成先决条件在制作手册中。