Makefile Make忽略现有规则

Makefile Make忽略现有规则,makefile,gnu-make,Makefile,Gnu Make,我有一个简单的GNU Make文件: # Bibliografia BIBLIO = referencies/biblio.bib CSL = referencies/acm-mod.csl TMPATOM = plantilles/entorn.pandoc.atom.html # Variables PANDOC_MD_ATOM = pandoc --webtex --smart --from=markdown+auto_identifiers+table_captions+simple_

我有一个简单的GNU Make文件:

# Bibliografia
BIBLIO = referencies/biblio.bib
CSL = referencies/acm-mod.csl
TMPATOM = plantilles/entorn.pandoc.atom.html

# Variables
PANDOC_MD_ATOM = pandoc --webtex --smart --from=markdown+auto_identifiers+table_captions+simple_tables+pipe_tables+strikeout+tex_math_dollars+raw_html+footnotes+inline_notes+citations+implicit_figures --to=html5 --bibliography=$(BIBLIO) --csl=$(CSL) --filter pandoc-citeproc --metadata link-citations=true --template=$(TMPATOM)

ERB = erb -T 1

# Què processar
MARKDOWN_YAML_ATOM=$(shell ruby ./select.rb 'atom')
MARKDOWN_ATOM=$(MARKDOWN_YAML_ATOM:.md=.md.atom.html)

all: $(MARKDOWN_ATOM)

%.md.atom.html: %.md %.md.meta $(TMPATOM)
    $(ERB) $< | $(PANDOC_MD_ATOM) -V filename=$< $<.meta -o $@

但是很明显,这是文件
.md.atom.html

的一个规则,当make想要构建一个目标
blog/Aitor thermory.md.atom.html
并且没有明确的规则时,它会寻找与该目标匹配的规则

当它查看模式规则时,它将与
Aitor定理
的词干(与
%
匹配的部分)和
blog/
的目录前缀相匹配。因此,当它为先决条件构建模式时,它将对stem和directory使用相同的值;也就是说,make将检查目标
blog/Aitor-therm.md
blog/Aitor-therm.md.meta
(当然还有
plantilles/entorn.pandoc.atom.html
)是否已经存在或者可以使用其他模式规则生成

您看到的错误意味着
make
无法确定如何构建一个或多个这些先决条件。当这种情况发生时,
make
无法使用此模式规则(它不匹配),因此它将寻找其他模式规则来使用。如果没有其他模式规则,那么它将给出此错误“无规则生成目标”,因为没有匹配规则

由于您尚未告诉我们您现有的实际可用文件和预期使用的文件的名称,因此我们无法进一步通知您


您可以运行
make-d
查看
make
调用的所有步骤的完整跟踪,以尝试构建目标(有大量输出,因此将其重定向到文件或其他内容)。

可能是错误的编码?
make: *** No rule to make target 'blog/Aitor-theorem.md.atom.html', needed by 'all'.  Stop