我有一个Makefile,可以从BibTex-File中提取几个作者的出版物,并将它们转换为HTML页面。我试图尽可能地创建Makefile,但现在我被卡住了。
这就是我现在所拥有的:
objects = sts-bib-*.bib
results = Author1 Author2
.PHONY : clean cleanall all $(results)
all : $(results)
$(results) : bib-$@.html
bib-%.bib :
TMPDIR=. bibtex2html-1.96-osx-x86_64/bib2bib -c 'author : "$*"' -s '$$date' source.bib
bib-%.html : bib-%.bib
TMPDIR=. bibtex2html-1.96-osx-x86_64/bibtex2html -d -r --nodoc --nobibsource --no-header --no-footer -o bib-$@.html bib-$@.bib
clean :
-rm $(objects)
当我运行它时,make告诉我 all 没有任何事情要做。如果我为专用用户运行它,例如make Author1
,它还告诉我,对于Author1,没有什么可以做的。我是否对目标的依赖性做了错误?我还尝试了$(results) : bib-%.html
和% : bib-%.html
,结果相同。
我认为问题在于目标%(结果)的依赖性。我想要Using make target name in generated prerequisite之类的东西,但需要完整的目标名称。所以我尝试了% : % : sts-bib-%.html
,这导致混合隐式和静态模式规则。
我的错误在哪里?
答案 0 :(得分:1)
静态模式规则是
<list of targets> : <pattern to extract stem from target> : <prereqs>
所以你需要使用:
$(results) : % : bib-%.html
而不是$(results) : bib-$@.html
。