使。无事可做为第一。

问题描述 投票:1回答:2

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

谁能告诉我这是怎么回事?

linux makefile
2个回答
3
投票

可能是有一个后缀不知道,你可以在文件中添加一个后缀。.SUFFIXES 指令。

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

.SUFFIXES: .tex .pdf
# etc.     

但是,比起使用过时的后缀规则,你应该使用模式规则。

%.pdf : %.tex 
        pdflatex $<

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
© www.soinside.com 2019 - 2024. All rights reserved.