У меня есть make файл, из которого я хочу вызвать другой внешний bash script, чтобы сделать еще одну часть здания. Как мне лучше всего это делать.
Запуск bash script из файла make
Ответ 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
, что является недостатком, но в конечном итоге это не огромная сделка).