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