Мне кажется, что это просто сценарий оболочки с немного более простой обработкой аргументов командной строки.
Почему стандартно запускать make вместо ./make.sh
shell
makefile
compilation
HoboBen
источник
источник
Ответы:
Общая идея состоит в том, что
make
поддерживает (разумно) минимальные перестроения, т. Е. Вы указываете, какие части вашей программы зависят от других частей. Когда вы обновляете какую-то часть программы, она восстанавливает только те части, которые от этого зависят. Хотя вы можете сделать это с помощью сценария оболочки, это потребует гораздо больше работы (явная проверка дат последнего изменения для всех файлов и т. Д.). Единственная очевидная альтернатива сценарию оболочки - каждый раз перестраивать все. Для крошечных проектов это совершенно разумный подход, но для большого проекта полная перестройка может легко занять час или больше - используяmake
, вы можете легко выполнить то же самое за минуту или две ...Я, вероятно, также должен добавить, что существует довольно много альтернатив, которые имеют, по крайней мере, в целом аналогичные возможности. Особенно в тех случаях, когда перестраивается только несколько файлов в большом проекте, некоторые из них (например, Ninja ) часто значительно быстрее, чем make.
источник
Make - это экспертная система
Есть разные вещи, которые сложно сделать с помощью сценариев оболочки ...
источник
Make гарантирует, что при внесении изменений в исходные файлы будут перекомпилированы только необходимые файлы.
Например:
Если я изменяю
2.h
только файл и запускаюmake
, он выполняет все 3 команды в обратном порядке.Если я изменяю
1.c
только файл и запускаюmake
, он выполняет только первые 2 команды в обратном порядке.Попытка добиться этого с помощью вашего собственного сценария оболочки потребует много
if/else
проверок.источник
rsync -r -c -I $SOURCE $DEST_DIR
в оболочке.Как и вышеперечисленное, Make является декларативным (-иш) языком параллельного программирования.
Допустим, у вас есть 4000 графических файлов для преобразования и 4 процессора. Попробуйте написать сценарий оболочки из 10 строк (я здесь щедрый), который будет делать это надежно, загружая ваши процессоры.
Возможно, реальный вопрос в том, зачем люди пишут сценарии оболочки.
источник
make обрабатывает зависимости: make-файл описывает их: двоичный файл зависит от объектных файлов, каждый объектный файл зависит от исходного файла и заголовков ... при запуске make сравниваются даты файлов, чтобы определить, что нужно перекомпилировать ,
Можно напрямую вызвать одну цель, чтобы не создавать все, что описано в Makefile.
Кроме того, синтаксис make предусматривает замену vpath
Все это можно записать в сценариях оболочки, сделав это у вас уже есть.
источник