Makefile 目标没有依赖项时生成文件行为不一致
下面是一个快速而肮脏的Makefile,用于对两个文档执行Latex传递Makefile 目标没有依赖项时生成文件行为不一致,makefile,Makefile,下面是一个快速而肮脏的Makefile,用于对两个文档执行Latex传递 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}" &am
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
当我运行makebook
时,它执行book的配方。当我运行make slides
时,它总是说make:“slides”是最新的。
这两个目标都没有任何依赖关系,那么为什么make在这两种情况下的行为不一样呢?基于该命令
${LATEX} -output-directory="${SLIDESDIR}" slides/slides.tex
在当前目录中,似乎有一个名为slides
的目录。大概你没有一本叫做book
。您可以更改目标名称或目录名称,或将目标声明为.PHONY
,具体取决于所需的行为