2010-12-01 76 views
2

假設我有一個Makefile:依賴Makefile中

all: $(BINARY) 

$(BINARY): $(OBJS) $(DEBUG_OBJS) 
    #Link objects here 

$(OBJS): headers 
    #Compile code into objects without debug option 

$(DEBUG_OBJS): headers 
    #Compile code into objects with debug option 

headers: 
    #Create on-the-fly header files 

正如你所看到的,目標headers由兩個$(OBJS)$(DEBUG_OBJS)需要。問題是,headers會被調用兩次嗎?此外,將下面的代碼等於/相當於上面:

all: $(BINARY) 

$(BINARY): headers $(OBJS) $(DEBUG_OBJS) 
    #Link objects here 

$(OBJS): 
    #Compile code into objects without debug option 

$(DEBUG_OBJS): 
    #Compile code into objects with debug option 

headers: 
    #Create on-the-fly header files 

,將頭得到$(OBJS)$(DEBUG_OBJS)通過$(BINARY)之前叫什麼名字?

回答

4

不,headers只做一次。

您可以編寫一個簡單的makefile來測試它:

all: foo bar 

foo: baz 

bar: baz 

baz: 
     echo 'hi' 

makehi將只是一次呼應。

而在你的第二種情況下,看到$(BINARY)首先取決於headers,所以它在headers之前依賴於其他依賴。

+0

非常感謝! – Sagar 2010-12-01 19:58:22