【发布时间】:2013-11-20 19:42:57
【问题描述】:
在下面查看我的 Makefile。我们的论文中有一组图表。这些图表可以使用 python 脚本自动生成。但并非所有合作者都拥有 Python 工具(或需要它们)。我想做的是添加导致这种行为的规则:
- 需要一个明确的“制作图表”来重建图表 PDF(也由 git 跟踪)。
- 如果图形 PDF 已过期(相对于其来源),简单的“制作”将不会尝试重新构建它们。只能重建主文档。
- 如果任何图形 PDF 的更新晚于主文档(由于拉取或“制作图形”),则“制作”会注意到依赖关系已更改并重建文档。
- 如果缺少图形 PDF(即使它可以通过“make graphs”生成),“make”失败也没关系。
在寻找解决方案时,我发现了“仅订购的先决条件”。但这与我想要的相反。对于仅订单的先决条件,“make”会隐含地导致“make graphs”发生,但它不会重建文档。我不希望发生“制作图表”,但我确实想重建文档。
有可能做我想做的事吗?
谢谢。
MAIN = main
TEXFILES = $(shell find . -name '*.tex')
BIBFILES = $(shell find . -name '*.bib')
FIGURES = $(shell find FIGS/ -name '*.pdf')
GRAPHS = $(shell find GRAPHS/ -name '*.py' | sed -e 's/py/pdf/')
LATEX = pdflatex
BIBTEX = bibtex
default: $(MAIN).pdf
$(MAIN).pdf: $(FIGURES) $(TEXFILES) $(BIBFILES)
$(LATEX) -output-format=pdf $(MAIN)
$(BIBTEX) $(MAIN)
$(LATEX) -output-format=pdf $(MAIN)
$(LATEX) -output-format=pdf $(MAIN)
$(MAIN).ps: $(MAIN).pdf
pdf2ps $(MAIN).pdf $(MAIN).ps
graphs: $(GRAPHS)
GRAPHS/%.pdf: GRAPHS/%.py
cd GRAPHS; python2 $*.py; cd -
clean:
rm -f *~ *.aux *.log *.bbl *.blg *.brf $(MAIN).dvi $(MAIN).ps $(MAIN).pdf
【问题讨论】:
标签: makefile dependencies gnu-make