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.
The only solution I see is to create a wrapper script that simply passes all arguments to
make
and then runs the custom action you want:You could use two makefiles, one of which calls the other. For example
wrapper.mk:
other.mk:
Then running "make -f wrapper.mk foo", wrapper.mk runs other.mk to build foo. The .PHONY target means that the targets will be passed to other.mk for consideration everytime regardless of whether the files exist or not.
This requires listing all your targets in wrapper.mk - there may be ways round this using default rules or match-anything rules.
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: