我有一个由互连的tex文件组成的讲座。 lecture.tex
在/pictures/output
文件夹中使用pdf格式的图片。它们是从tex
文件夹中的/pictures
个文件生成的。
lecture.tex
makefile
/pictures
/output
01_picture.pdf
02_picture.pdf
01_picture.tex
02_picture.tex
makefile
我为图片创建了一个makefile(它工作正常):
COMMAND = pdflatex
FLAGS = #-quiet
FILES = $(wildcard ./[0-9]*.tex)
.PHONY = all create_dir
OUTPUTDIR="output"
all: create_dir $(patsubst ./%.tex,./output/%.pdf,$(FILES))
create_dir:
@if [ ! -d $(OUTPUTDIR) ]; then \
mkdir $(OUTPUTDIR); \
fi
./output/%.pdf: %.tex
$(COMMAND) $(FLAGS) $*.tex
mv ./$*.pdf ./output
rm ./$*.aux ./$*.log
现在编写讲座时,我们需要做:
if(any pictures tex files were modified)
recompile picture pdf
recompile lecture.tex
我尝试使用这个主要的makefile:
COMMAND = pdflatex
FLAGS = #-quiet
.PHONY = pictures
all: lecture.pdf
lecture.pdf: pictures lecture.tex
$(COMMAND) $(FLAGS) lecture.tex
pictures:
make -C pictures
但它不起作用。或许,我只需要1个makefile就可以了吗?
答案 0 :(得分:2)
只需使用一个makefile,并正确表达依赖关系:
pictures := pictures
output := $(pictures)/output
PDFLATEX := pdflatex
PDFLATEXFLAGS := #-quiet
COMPILE.pdf := $(PDFLATEX) $(PDFLATEXFLAGS)
pictures_tex := $(wildcard $(pictures)/[0-9]*.tex)
pictures_pdf := $(pictures_tex:$(pictures)/%.tex=$(output)/%.pdf)
lecture.pdf: lecture.tex $(pictures_pdf)
$(COMPILE.pdf) $<
$(output)/%.pdf: $(pictures)/%.tex | $(output)
$(COMPILE.pdf) -output-directory $| $<
$(RM) $(output)/$*.aux $(output)/$*.log
$(output): ; mkdir -p $@