Makefile 作为先决条件一部分的规则名称

Makefile 作为先决条件一部分的规则名称,makefile,gnu-make,Makefile,Gnu Make,我有一个Makefile,可以从BibTex文件中提取几个作者的出版物,并将它们转换为HTML页面。我试图创建尽可能通用的Makefile,但现在我被卡住了 以下是我目前的情况: objects = sts-bib-*.bib results = Author1 Author2 .PHONY : clean cleanall all $(results) all : $(results) $(results) : bib-$@.html bib-%.bib : TMPDIR=. bi

我有一个Makefile,可以从BibTex文件中提取几个作者的出版物,并将它们转换为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告诉我没有什么可以做的。如果我为一个专用用户运行它,例如,
makeauthor1
,它还告诉我,对于Author1,什么都不做。我对目标的依赖项做了什么错误吗?我还尝试了
$(结果):bib-%.html
%:bib-%.html
,都得到了相同的结果

我认为问题在于目标%(结果)的依赖性。我想要类似的东西,但要有完整的目标名称。所以我尝试了
%:%:sts bib-%.html
,这导致了隐式和静态模式规则的混合


我的错在哪里

静态模式规则是

<list of targets> : <pattern to extract stem from target> : <prereqs>

而不是
$(结果):bib-$@.html

谢谢,这很有帮助,但只是进一步。现在它抱怨说:没有规则来生成Author1所需的目标bib-Author1.html。当我
尝试bib-%.html:%.html:%.bib
时,它说:混合了隐式和静态模式规则,在这里(在一个空目录中)替换就足够了(并且在构建规则前面加上“echo”),以使make正确运行。你用的是什么版本的make?您对上面的makefile做了任何其他更改吗?因为这个问题是这里所问问题的后续问题,我刚刚提出了另一个问题:显然,我对不包含通配符的静态模式规则目标的评论是不正确的。
$(results) : % : bib-%.html