我正在尝试创建一个Makefile
可生成我的文档的文件。
➜ resume git:(main) ✗ cat Makefile
.PHONY: .
CC = xelatex
CURRENT_DIR = .
RESUME_DIR = ./src
RESUME_SRCS = $(shell find $(RESUME_DIR) -name '*.tex')
resume: $(CURRENT_DIR)/resume.tex $(RESUME_SRCS)
$(CC) -output-directory=$(CURRENT_DIR) $<
clean:
rm -rf $(CURRENT_DIR)/*.pdf
然而,尽管 PDF 已成功生成,我仍不断收到以下错误:
(./src/education.tex) (./src/extracurricular.tex) [2] (./resume.aux) )
Output written on ./resume.pdf (2 pages).
Transcript written on ./resume.log.
make: *** [Makefile:9: resume] Error 1
是不是哪里出了问题Makefile
?我找了好久都没找到原因。
答案1
我猜你的成绩单中遗漏了一些东西。查看你提供的 makefile 和代码片段,我猜发生的事情是你试图在 src 目录中不是顶级 LaTeX 文件的文件上运行 xelatex,这就是你收到错误的原因。老实说,我不知道 make 是否是一种适用于 LaTeX 的工具——与 C 不同,在 C 中你要将多个.c
文件编译成.o
文件,然后将它们链接到最终的可执行文件中,而 LaTeX 输出的生成是直接编译单个顶级文件(可能运行多次)。话虽如此,如果你真的想尝试使用 makefile 来达到你的目的,我会将 的定义替换为RESUME_SRCS
:
RESUME_SRCS = ./src/resume.tex
你应该得到期望的结果。
当 Make 在 LaTeX 流程中有意义时
使用 Make 之类的工具可能有意义的情况是,当您拥有以编程方式生成的文件,这些文件构成 LaTeX 文档的输入时。例如,您可能需要进行一些预处理来生成插图。然后,在这种情况下,makefile 只能在底层数据文件发生变化时重新生成插图,然后运行 LaTeX。