我Makefile
用来从.tex
文件生成 PDF。
在我的 LaTeX 文件中使用参考时。有时我会得到类似的东西
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
我知道重新运行 LaTeX 编译命令可以解决这个引用问题,但在我的Makefile
,%.pdf
仅依赖于%.tex
,因此make
再次运行并不能解决问题(.tex
文件中没有任何更改)。我需要make clean
重新生成 PDF。
这是我的Makefile
TEX := $(wildcard *.tex)
default: $(TEX:.tex=.pdf)
%.pdf: %.tex
xelatex $<
.PHONY: clean
clean:
rm -v *.aux *.toc *.log *.out
如何解决这个问题呢?谢谢你。
更新:
这是我从谷歌找到的一些想法
- 将目标更改
default
为.PHONY
. 这不是一个很好的解决方案(因为那里可能有乳胶文件,我只需要重新编译一个文件) %.pdf
将 的依赖项更改为 include%.aux
。但我不知道在 GNU make 中是否可行?(取决于%.aux
文件是否存在,否则忽略对 的依赖%.aux
)grep
对文件执行.log
操作并找到特定的警告。如果存在,重新运行编译命令。