我想調用另一個目標在我的makefile後,我打電話自定義命令是這樣的:我可以在Makefile中調用我自己的腳本後調用另一個目標嗎?
first_target:
do_some_stuff
second_target:
call some command
first_target
當我不喜歡它上面,它抱怨說first_target命令沒有找到。我怎麼能這樣做呢?
我想調用另一個目標在我的makefile後,我打電話自定義命令是這樣的:我可以在Makefile中調用我自己的腳本後調用另一個目標嗎?
first_target:
do_some_stuff
second_target:
call some command
first_target
當我不喜歡它上面,它抱怨說first_target命令沒有找到。我怎麼能這樣做呢?
明顯的答案是,你可以調用其它品牌:
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難以閱讀)。
你一定要記住下面的語法生成文件recepies有:
target: dependency1 dependency2 ... dependencyN
command1
command2
...
command3
隨着command1
,command2
...是命令您的系統的外殼可執行文件。因此,因此在您的示例中寫入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