2014-09-30 59 views
1

有没有一种方法可以知道谁在make文件称为目标。例如,如果在make文件,我有以下看看谁叫make目标

foo: bar 

bar: 
    gcc bar.c 
    gcc foo.c 

是否有任何变量或化妆另一种方式来确定FOO叫吧?

+1

这里有什么终极目标是什么? – 2014-09-30 19:31:14

+0

这是看目标从何处被调用。喜欢看foo,因为foo取决于吧。 – jgr208 2014-09-30 19:57:52

+0

是的,但是为了什么目的?你可能会在其他变化中获得类似的非'-j'形式的信息以及在目标中使用'$?'来找出触发它的先决条件(这与你想要的相反,但会告诉你一些相同的信息)。 – 2014-09-30 20:04:27

回答

1

基本上有两种方法来解决这个问题:

  1. 动态:仪器你的运行,所以你将能够看到谁打电话给谁。 MAKAO是一个很好的工具。
  2. 静:解析生成文件,以确定哪些依赖可以从目标来调用。

an explanation I wrote some time ago见。

0

要做到这一点我做了make文件看起来像下面

foo: TARGET=foo 

foo: bar 

bar: 
    @echo ${TARGET} 

,并得到FOO作为输出

+0

...这不是我真正有用的。如果你有多个目标,这取决于其设置变量的目标,你得总是最深的一个是不是OP意味着我相信 – Klaus 2014-09-30 19:27:22

+0

它会得到你,取决于两个设定变量的当前目标最近的目标。这是否有用取决于我认为的目标。 – 2014-09-30 19:31:38

+0

这对我想要做的事很有用。但是现在我切换到了makefile设置的不同方式来实现我的目标。 – jgr208 2014-09-30 19:56:52

3

呼叫make -dmake -d 2>&1 | tee make.log。这告诉你一切正在做的事情。这是相当详细的,这就是为什么你想将它管入一个日志文件,你可以在以后更好地分析。