簡體   English   中英

強制Makefile在構建任何目標后執行腳本(在退出之前)

[英]Force Makefile to execute script after building any target (just before exiting)

我想在make退出時執行shell命令,無論它構建什么目標。 似乎make沒有辦法直接這樣做。 但是,這是一個在啟動時執行shell命令的示例,無論目標如何:

強制Makefile在構建目標之前執行腳本

有沒有類似的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM