Force Makefile to execute script after building any target (just before exiting)
makefile, shell
Solution
As janos says, there is no facility built into make to do it. You can use a wrapper such as he suggests. You an also, if you're willing to live with some amount of "bleah", push that into your makefile using recursion. It would look something like this, perhaps:
ifdef RECURSING
... normal makefile goes here ...
else
.DEFAULT all:
@$(MAKE) RECURSING=true $@ ; r=$$? ; \
<extra shell command here>; \
exit $$r
endif
Problem
I'd like to execute a shell command when make exits, regardless of whatever target it built. Seems like make doesn't have a way to do this directly. However, here's an example of having make execute a shell command upon startup, regardless of the target: Force Makefile to execute script before building targets Is there any similar hack have make execute a shell command once just before exiting? I could put the command at the bottom of every target, but a) it would get executed multiple times, and b) that is ugly and difficult to manage.
Related problems
- How to pass argument to Makefile from command line?
- How to get the invoking target of makefile?
- Force Makefile to execute script before building targets
- Make: how to continue after a command fails?
- Getting the name of the makefile from the makefile
- Force exit from a Makefile target without raising an error
- Suppress "nothing to be done for 'all' "
- Suppress make rule error output