запуск скрипта bash из файла make - PullRequest
33 голосов
/ 23 марта 2010

У меня есть make-файл, из которого я хочу вызвать другой внешний bash-скрипт для выполнения другой части здания.Как бы мне лучше поступить так.

Ответы [ 3 ]

34 голосов
/ 23 марта 2010

Как и при вызове любой другой команды из make-файла:

target: prerequisites
    shell_script arg1 arg2 arg3

По поводу вашего дальнейшего объяснения:

.PHONY: do_script

do_script: 
    shell_script arg1 arg2 arg3

prerequisites: do_script

target: prerequisites 
8 голосов
/ 23 марта 2010

Каждое из действий в правиле make-файла является командой, которая будет выполняться в подоболочке. Необходимо убедиться, что каждая команда независима , поскольку каждая из них будет выполняться внутри отдельной подоболочки.

По этой причине вы часто будете видеть разрывы строк, когда автор хочет, чтобы несколько команд выполнялись в одной и той же подоболочке:

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
5 голосов
/ 06 октября 2017

Возможно, не «правильный» способ сделать это, как уже предоставленные ответы, но я столкнулся с этим вопросом, потому что я хотел, чтобы мой make-файл запускал сценарий, который я написал, чтобы сгенерировать заголовочный файл, который предоставил бы версию для всего пакета программного обеспечения. У меня довольно много целей в этом пакете, и я не хотел добавлять им новое условие. Помещение этого в начало моего make-файла сработало для меня

$(shell ./genVer.sh)

, который говорит make просто запустить команду оболочки. ./genVer.sh - это путь (тот же каталог, что и у make-файла) и имя моего скрипта для запуска. Это работает вне зависимости от того, какую цель я указываю (включая clean, что является недостатком, но в конечном счете для меня это не так уж важно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...