Makefile gnu make“;“叶”;先决条件

Makefile gnu make“;“叶”;先决条件,makefile,gnu-make,Makefile,Gnu Make,是否可以了解目标的叶先决条件 在这种情况下,t1的叶先决条件是t3和foo.txt,而t2是中间条件: t1: t2 t3 cat t2 t3 > t1 t2: foo.txt cat $< > $@ t1:t2 t3 cat t2 t3>t1 t2:foo.txt cat$$@ 在本例中,t2严格来说是一个中间存储库,而t3已经存在(它不可生成) 如何从make获得t3和foo.txt,作为t1的叶目标?是否有理由期待此类设施的存在 用例:我正在将一个LaTeX

是否可以了解目标的叶先决条件

在这种情况下,
t1
的叶先决条件是
t3
foo.txt
,而
t2
是中间条件:

t1: t2 t3
  cat t2 t3 > t1

t2: foo.txt
  cat $< > $@
t1:t2 t3
cat t2 t3>t1
t2:foo.txt
cat$<>$@
在本例中,
t2
严格来说是一个中间存储库,而t3已经存在(它不可生成)

如何从make获得
t3
foo.txt
,作为
t1
的叶目标?是否有理由期待此类设施的存在


用例:我正在将一个LaTeX文档编译为PDF,并希望在不在Makefile中明确列出它们的情况下删除所有leaf先决条件。

在可以通过访问先决条件的规则中,例如您可以执行的
$

make --dry-run --debug=a t1 | grep "Considering target"
并编写一个复杂的脚本来解析输出(最后一行,以及任何缩进大于其后续行的条目都是leaves)。听起来你想从make调用中访问这个列表,但是我认为没有任何内置的支持


(你可以在配方中进行递归调用——虽然效率不高,但可能有效)。

我如何从make获得
t2
foo.txt
:你的意思是
t3和foo.txt
?你的问题不清楚你想要什么,可能是因为你输入了一些名字。您是否可以提供最小的工作示例makefile,该makefile可以满足您的需要,然后指出您希望自动获取的部分,而不是手动键入?