我想学习如何在我的 makefile 目标的先决条件中重新使用 % 符号,假设目标是X.pdf
,并且 prerequesite 在X/X.tex
.
详细地说,我目前有一个像这样的makefile:
all: foo.pdf
%.pdf: %.tex
pdflatex $*.tex
我还有一个文件foo.tex
,当我输入make
它时,它会foo.pdf
运行pdflatex foo.tex
。
现在由于各种我无法控制的原因,我的目录结构发生了变化:
my_dir
|- Makefile
|- foo
|- foo.tex
我想修改我的 Makefile 以便当它尝试 make 时X.pdf
,它会查找文件X/X.tex
。
我尝试了以下方法(我试图把 '%/%.tex' 告诉它寻找foo/foo.tex
):
all: foo.pdf
%.pdf: %/%.tex
pdflatex $*/$*.tex
但是,这会产生:
No rule to make target `foo.pdf', needed by `all'. Stop.
也是如此%.pdf: $*/$*.tex
。
如果我将其更改%/%.tex
为foo/%.tex
按预期工作,但我不想foo
在那里硬编码,因为将来我会这样做all: foo.pdf bar.pdf
,它应该寻找foo/foo.tex
and bar/bar.tex
。
我对 Makefiles 相当陌生(经验仅限于根据我的需要修改别人的文件),并且从未做过绝对基本的,所以如果有人能给我一个有用的指针(我真的不知道在 Makefile 文档中搜索什么词 - 唯一看起来很有希望的是%
and $*
,我无法开始工作)。