用于将标记文件编译为单个PDF的Makefile
当许多标记文件发生更改时,我尝试使用Makefile编译PDF:用于将标记文件编译为单个PDF的Makefile,makefile,Makefile,当许多标记文件发生更改时,我尝试使用Makefile编译PDF: # Compile report source := draft output := dist sources := $(wildcard $(source)/*.md) objects := $(patsubst %.md,%.pdf,$(subst$(source),$(output),$(sources))) all: $(objects) report-print.md: $(source)/%.md cat
# Compile report
source := draft
output := dist
sources := $(wildcard $(source)/*.md)
objects := $(patsubst %.md,%.pdf,$(subst$(source),$(output),$(sources)))
all: $(objects)
report-print.md: $(source)/%.md
cat draft/*.md | pandoc \
--variable geometry:a4paper \
--number-sections \
--toc \
--f markdown \
-s \
-o dist/report-print.pdf \
.PHONY : clean
clean:
rm -f $(output)/*.pdf
我得到一个错误:
make: *** No rule to make target `dist/01-title.pdf', needed by `all'. Stop.
文件
draft/01 title.md
是源文件之一。您没有从一个.md
文件创建一个.pdf
文件的规则。这很好,因为那不是你想做的。您想从所有.md
文件(据我所知)创建一个pdf
文件。所以,抛弃所有的对象
东西;您不需要创建所有这些单独的pdf
文件
还有其他一些小问题:您没有创建与目标相同的文件名(report print.md
vs.$(output)/report print.pdf
),您应该使用自动变量,等等)
您的makefile将只是:
source := draft
output := dist
sources := $(wildcard $(source)/*.md)
all: $(output)/report-print.pdf
$(output)/report-print.pdf: $(sources)
cat $^ | pandoc \
--variable geometry:a4paper \
--number-sections \
--toc \
--f markdown \
-s \
-o $@
.PHONY : clean
clean:
rm -f $(output)/*.pdf
您没有从一个
.md
文件创建一个.pdf
文件的规则。这很好,因为那不是你想做的。您想从所有.md
文件(据我所知)创建一个pdf
文件。所以,抛弃所有的对象
东西;您不需要创建所有这些单独的pdf
文件
还有其他一些小问题:您没有创建与目标相同的文件名(report print.md
vs.$(output)/report print.pdf
),您应该使用自动变量,等等)
您的makefile将只是:
source := draft
output := dist
sources := $(wildcard $(source)/*.md)
all: $(output)/report-print.pdf
$(output)/report-print.pdf: $(sources)
cat $^ | pandoc \
--variable geometry:a4paper \
--number-sections \
--toc \
--f markdown \
-s \
-o $@
.PHONY : clean
clean:
rm -f $(output)/*.pdf
这会产生一个错误:`cat draft/01-title.md draft/02-abstract.md draft/03-introduction.md draft/04-methods.md draft/05-results.md draft/06-discussion.md draft/07-Acknowledgets.md draft/08-Literature-Quied.md | pandoc \--变量几何:a4paper \--数字节\pandoc::openFile:不存在(没有这样的文件或目录)make:**[dist/report print.pdf]错误1`我无法在未格式化的评论中正确阅读该错误消息。您确定“--number节”之后的参数丢失了吗?否——toc等。?如果是这样,这可能意味着在--number sections行的反斜杠后面有多余的空格。记住,对于转义换行符,反斜杠必须是该行的最后一个字符;如果后面有空格,则反斜杠引用的是空格,而不是换行符。@MasScientist是的,是空白字符。现在可以用了,谢谢!这会产生一个错误:`cat draft/01-title.md draft/02-abstract.md draft/03-introduction.md draft/04-methods.md draft/05-results.md draft/06-discussion.md draft/07-Acknowledgets.md draft/08-Literature-Quied.md | pandoc \--变量几何:a4paper \--数字节\pandoc::openFile:不存在(没有这样的文件或目录)make:**[dist/report print.pdf]错误1`我无法在未格式化的评论中正确阅读该错误消息。您确定“--number节”之后的参数丢失了吗?否——toc等。?如果是这样,这可能意味着在--number sections行的反斜杠后面有多余的空格。记住,对于转义换行符,反斜杠必须是该行的最后一个字符;如果后面有空格,则反斜杠引用的是空格,而不是换行符。@MasScientist是的,是空白字符。现在可以用了,谢谢!