我是一个linux和make的新手,我写了一个makefile来自动将.tex文件编译成.pdf。但是当我调用make时,它说 "Nothing to be done for 'first.pdf'",这是我的makefile。
TEXFILE= first.tex
PDF= $(TEXFILE:.tex=.pdf)
.tex.pdf:
pdflatex $<
$(PDF):$(TEXFILE)
view:
evince $(PDF)
clean:
@rm -f \
$(TEXFILE:.tex=.log) \
$(TEXFILE:.tex=.aux) \
$(TEXFILE:.tex=.toc)
谁能告诉我这是怎么回事?
可能是有一个后缀不知道,你可以在文件中添加一个后缀。.SUFFIXES
指令。
TEXFILE=first.tex
PDF=$(TEXFILE:.tex=.pdf)
.SUFFIXES: .tex .pdf
# etc.
但是,比起使用过时的后缀规则,你应该使用模式规则。
%.pdf : %.tex
pdflatex $<
这个问题存在于将文字分割成多个.tex文件的情况下。make
可以成功,但除非你修改 first.tex
你会得到。
"'first.pdf'没有任何结果
# ...
# include all text files from current directory
SOURCES := $(shell find . -name '*.tex')
# include files figs directory ...
SOURCES += $(shell find ./figs)
# ...
# add sources here will cause recompilation when something is modified
$(PDF):$(TEXFILE) $(SOURCES)
# some phony targets
.PHONY: all pdf view clean