Подтвердить что ты не робот

Запуск bash script из файла make

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

4b9b3361

Ответ 1

Также как вызов любой другой команды из файла makefile:

target: prerequisites
    shell_script arg1 arg2 arg3

Относительно вашего дальнейшего объяснения:

.PHONY: do_script

do_script: 
    shell_script arg1 arg2 arg3

prerequisites: do_script

target: prerequisites 

Ответ 2

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

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

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

Ответ 3

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

$(shell ./genVer.sh)

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