How to run a bash script from a Makefile?

后端 未结 3 1285
伪装坚强ぢ
伪装坚强ぢ 2021-02-01 01:48

I have a Makefile from which I want to call another external bash script to do another part of the building. How would I best go about doing this?

相关标签:
3条回答
  • 2021-02-01 02:13

    Just like calling any other command from a makefile:

    target: prerequisites
        shell_script arg1 arg2 arg3
    

    Regarding your further explanation:

    .PHONY: do_script
    
    do_script: 
        shell_script arg1 arg2 arg3
    
    prerequisites: do_script
    
    target: prerequisites 
    
    0 讨论(0)
  • 2021-02-01 02:19

    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).

    0 讨论(0)
  • 2021-02-01 02:23

    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
    
    0 讨论(0)
提交回复
热议问题