2014-09-30 36 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。這告訴你一切正在做的事情。這是相當詳細的,這就是爲什麼你想將它管入一個日誌文件,你可以在以後更好地分析。