2017-01-22 67 views
0

這是一個快速且髒的Makefile,用於爲兩個文檔執行Latex傳遞。目標沒有依賴關係時Makefile行爲不一致

BOOKDIR=/tmp/book 
SLIDESDIR=/tmp/slides 

LATEX=pdflatex -shell-escape --halt-on-error 

book: 
    mkdir -p "${BOOKDIR}" 
    ${LATEX} -output-directory="${BOOKDIR}" book.tex && \ 
     (cd "${BOOKDIR}" && makeindex book) 

slides: 
    mkdir -p "${SLIDESDIR}" 
    ${LATEX} -output-directory="${SLIDESDIR}" slides/slides.tex 

all: book slides 

當我運行make book時,它會執行book的配方。當我運行make slides它總是說make: 'slides' is up to date.

這些目標都沒有任何依賴關係,所以爲什麼兩種情況下表現不一樣?

回答

0

基於命令

${LATEX} -output-directory="${SLIDESDIR}" slides/slides.tex 

看來,你有一個在當前目錄下名爲slides目錄。想必你沒有一個叫book。您可以更改目標名稱或更改目錄名稱,也可以將目標聲明爲.PHONY,具體取決於您想要的行爲。