[英]Force Makefile to execute script after building any target (just before exiting)
我想在make退出時執行shell命令,無論它構建什么目標。 似乎make沒有辦法直接這樣做。 但是,這是一個在啟動時執行shell命令的示例,無論目標如何:
有沒有類似的hack在退出之前執行一次shell命令? 我可以將命令放在每個目標的底部,但是a)它會被執行多次,而b)這是丑陋且難以管理的。
正如janos所說,沒有內置設施可以做到這一點。 您可以使用他建議的包裝器。 你也是,如果你願意忍受一些“bleah”,請使用遞歸將其推送到makefile中。 看起來像這樣,或許:
ifdef RECURSING
... normal makefile goes here ...
else
.DEFAULT all:
@$(MAKE) RECURSING=true $@ ; r=$$? ; \
<extra shell command here>; \
exit $$r
endif
我看到的唯一解決方案是創建一個包裝器腳本,它只是將所有參數傳遞給make
,然后運行你想要的自定義操作:
#!/bin/sh
make $* && ./custom_script.sh
您可以使用兩個makefile,其中一個調用另一個。 例如
wrapper.mk:
foo bar:
make -f other.mk $@
@echo finished
.PHONY: foo bar
other.mk:
foo bar:
@echo Building $@
然后運行“make -f wrapper.mk foo”,wrapper.mk運行other.mk來構建foo。 .PHONY目標意味着無論文件是否存在,目標都將被傳遞給other.mk以供每次考慮。
這需要在wrapper.mk中列出所有目標 - 可能有使用默認規則或匹配任何規則的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.