make:first.pdf没什么可做的

时间:2013-04-12 08:52:59

标签: linux makefile

我是linux的新手并且make,我编写了一个makefile来自动将.tex文件编译为.pdf。但是当我打电话给make时,它说“没有什么可以做'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)

任何人都可以告诉我它有什么问题吗?

2 个答案:

答案 0 :(得分:2)

可能其中一个后缀未知。 您可以添加.SUFFIXES指令:

TEXFILE=first.tex
PDF=$(TEXFILE:.tex=.pdf)

.SUFFIXES: .tex .pdf
# etc.     

但是,比使用过时的后缀规则更好,您应该使用模式规则:

%.pdf : %.tex 
        pdflatex $<

答案 1 :(得分:0)

如果将写入拆分为多个.tex文件,则存在此问题。 make可以成功,但是除非您修改first.tex,否则您将获得:

“'first.pdf'不需要做任何事情

用于多个输入更改的Makefile

# ...

# 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