How to run a bash script from a Makefile?
Each of the actions in the makefile rule is a command that will be executed in a subshell. You need to ensure that each command is independent, since each one will be run inside a separate subshell.
For this reason, you will often see line breaks escaped when the author wants several commands to run in the same subshell:
targetfoo: command_the_first foo bar baz command_the_second wibble wobble warble command_the_third which is rather too long \ to fit on a single line so \ intervening line breaks are escaped command_the_fourth spam eggs beans
Perhaps not the "right" way to do it like the answers already provided, but I came across this question because I wanted my makefile to run a script I wrote to generate a header file that would provide the version for a whole package of software. I have quite a bit of targets in this package, and didn't want to add a brand new prerequisite to them all. Putting this towards the beginning of my makefile worked for me
$(shell ./genVer.sh)
which tells make to simply run a shell command. ./genVer.sh
is the path (same directory as the makefile) and name of my script to run. This runs no matter which target I specify (including clean
, which is the downside, but ultimately not a huge deal to me).