我有几个名为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 $<