GNU Makefile 依赖项中 $(shell) 中的百分比符号

GNU Makefile 依赖项中 $(shell) 中的百分比符号

我知道 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)

推荐阅读:自动生成先决条件在制作手册中。

相关内容