我有以下目录结构
project
|-- Makefile
|-- data
|-- report.tex
|-- plot_1.eps
Makefile
中的规则之一执行 latex data/report.tex
。由于工作目录是 project
,我只在那里获取 report.dvi 和其他输出文件。如何在 ./data
中获取这些内容?
此外,我还在报告中添加了 plot_1.eps
。但它仍然期望路径data/plot_1.eps
。我们是否需要提供相对于执行 Latex 的当前工作目录的文件路径?或者report.tex
的位置?
在Makefile
中,我尝试了
reportdvi: outputparser
cd data
latex report.tex
cd ..
但这并没有改变工作目录,问题仍然存在。该怎么办?
最佳答案
这是 makefile 中常见的“陷阱”。每个命令都在其自己的 shell 中执行,因此“cd”仅在该 shell 中发生,但后续命令会从 make 的当前目录再次运行。
您想要做的是将所有命令放在一行上(并且不需要“cd ..”):
cd data && latex report.tex
或在行末尾使用 \
告诉 make 连接各行并将它们全部传递给 shell。请注意,您仍然需要 ;
或 &&
来分隔命令。
cd data && \
latex report.tex
关于makefile - makefile 的当前工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985936/