1

我是 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)

谁能告诉我它有什么问题?

4

2 回答 2

3

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

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

.SUFFIXES: .tex .pdf
# etc.     

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

%.pdf : %.tex 
        pdflatex $<
于 2013-04-12T09:24:32.307 回答
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
于 2020-06-04T17:12:14.063 回答