2015-10-20 45 views

回答

2

明顯的答案是,你可以調用其它品牌:

second_target: 
    call some command 
    $(MAKE) first_target 

但是,這並不一定這樣做的最有效的方式。你可以使用一箇中間目標:

intermediate_target: 
    call_some_command 

second_target first_target: 
    do_some_stuff 

second_target: intermediate_target 

(你也可以將第一目標的食譜作爲在第一和第二目標的食譜擴大宏或shell腳本,但我不喜歡,作爲它使makefile難以閱讀)。

1

你一定要記住下面的語法生成文件recepies有:

target: dependency1 dependency2 ... dependencyN 
    command1 
    command2 
    ... 
    command3 

隨着command1command2 ...是命令您的系統的外殼可執行文件。因此,因此在您的示例中寫入first_target的結果爲gmake嘗試執行命令first_target,因爲沒有這樣的命令,所以它失敗。

爲了實現您的目標,您必須使用recepie名稱後列出的依賴關係。您的示例中依賴項列表爲空。每個依賴關係必須在recepie製作之前可用。對於每個依賴項,應該在makefile中包含recepie,因此gmake能夠創建recepie所需的所有內容(或gmake將因no rule to make target xxx而失敗)。還請記住,所有依賴項都是在 recepie之前

所以你的情況我建議做這樣的事情:

first_target: 
    do_some_stuff 

second_target: first_target 
    call some command 

這將導致以下命令序列(注意first_target的命令second_target的問題之前執行):

do_some_stuff 
call some command 

我想這是不是真的,你需要什麼,所以我建議創建一個新的構建目標如下所示:

first_target: 
    do_some_stuff 

second_target: 
    call some command 

all: second_target first_target 

這將導致以下命令序列:

call some command 
do_some_stuff 
相關問題