Make:在目标依赖项中组合模式规则和通配符



我有几个名为ch*.tex的PDFLaTeX主文件,用数字代替星号,一个通过编译ch*.tex打印的PDF文件,称为ch*.pdf,以及在编译期间输入到每个ch*.tex的几个LaTeX文件,这些文件保存到各自的ch*/目录中。使用Makefile,我希望我的ch*.pdf文件由ch*.tex文件编译,ch*子目录中的TeX文件作为附加依赖项,无需硬编码每个ch*实例。

但是,在某些情况下,ch*子目录可能不存在。随着我的LaTeX项目的发展,这种情况会发生变化,因为一些ch*.tex文件可能会被拆分成子文件,而其他文件可能只是一个大的代码块文件。因此,我希望我的Makefile在ch*子目录文件存在的情况下使用它们作为依赖项,但如果它们不存在,则不使用。以下是一些失败的试验:

%.pdf : %.tex %/*.tex
pdflatex $<

此试用版成功检测到ch*子目录中的现有文件,但如果根本没有ch*目录,则无法编译。

%.pdf : %.tex $(wildcard %/*.tex)
pdflatex $<

本试验不将$(wildcard %/*.tex)视为依赖项,仅使用ch*.tex

如何使用ch*子目录中的文件(而不使用其他子目录中文件)作为相应ch*.pdf编译的依赖项?

一种方法是使用二次扩展:

.SECONDEXPANSION:
%.pdf : %.tex $$(wildcard $$*/*.tex)
pdflatex $<

相关内容

  • 没有找到相关文章

最新更新