Как выполнить bash-скрипт в make-файле - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть простой скрипт bash, который устанавливает и заархивирует приложение NodeJS.Он работал отлично местный.Теперь я хочу выполнить этот скрипт из Makefile.Поэтому я написал этот код

.FOO: install_and_zip
    install_and_zip: ./install_and_zip_foo.sh

Поэтому, если я запускаю этот Makefile с make foo, я получаю следующее сообщение об ошибке:

make: *** No rule to make target `foo'.  Stop.

Makefile и скрипт bash находятся в одном каталоге.

Что я делаю не так?Можете ли вы помочь мне исправить этот Makefile?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

Разные ошибки. Это будет работать:

foo:    install_and_zip
install_and_zip:
# next line must start with a real TAB (ASCII 9)
    ./install_and_zip_foo.sh
  • Если вы хотите сделать foo, тогда вызывайте правило foo, но не FOO или .FOO.
  • Код всегда ниже правила. Все командные строки должны начинаться с реального табуляции (ASCII 9, но не серии пробелов).

Правило foo вызывает правило install_and_zip. Это твое желание? В противном случае это тоже будет сделано:

foo:
# next line must start with a real TAB (ASCII 9)
    ./install_and_zip_foo.sh
1 голос
/ 16 апреля 2019

Вы должны написать «make .FOO» так, как вы определили, что это так. Тем не менее, вы должны правильно написать свой Makefile (вкладки и т. Д.). Если вы это сделаете, вы можете просто написать «make», и инструмент определит «install_and_zip» в качестве основной цели, таким образом выполняя ваш скрипт.

PD: цели с лидирующим '.' (и без косых черт) будет игнорироваться make при попытке определить основную цель (то есть они не будут запускаться, просто выполняя 'make'). Поэтому, если вы не знаете, что делаете, просто переименуйте вашу цель в «foo».

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