Make-файл является в основном тем же самым как пакетным файлом?

for ((i = 0 ; i < max ; i++ )); do echo "$i"; done
15
задан P Shved 18 November 2009 в 06:41
поделиться

7 ответов

Установите DDevExtensions от Андреаса Хаусладена.
В последней версии:
Версия 2.0 (13.09.2009)
Добавлено: поддержка Embarcadero RAD Studio 2010
.

И в завершение я должен добавить, что make также является макропроцессором. Он ориентирован на системы сборки программного обеспечения, поэтому он обеспечивает манипуляции с символическими элементами в своей проблемной области, такими как имена источников и целей.

Теперь make не является специально экспертной системой общего назначения, 1 , но он делает больше, чем просто упаковывает шелл-код, и технически он соответствует определению экспертной системы.

Make содержит механизм вывода . Все версии make имеют суффиксные правила , некоторые версии также реализуют шаблонные правила . В сочетании с вашей спецификацией (больше правил, обычно определяющих программное приложение) в результате получается экспертная система , которая решает, что нужно скомпилировать, связать, купить на eBay ,


1. Вместо этого это простая в использовании экспертная система. Скайнет, вероятно, не появится из-за случайной опечатки в сложном Makefile.
15
ответ дан 1 December 2019 в 00:23
поделиться

Makefile перечисляет команды, которые выполняются, но они структурированы иначе, чем список последовательных команд. Вместо этого у них есть цели и команды, чтобы «сделать» их. Затем make проверяет перечисленные зависимости и видит, какие цели необходимо обновить, чтобы выполнить то, что вы ему сказали. Существует множество неявных правил (учитывая, что файл * .c, make уже знает, как скомпилировать его в * .o и даже создать исполняемый файл!) И стандартных переменных (например, CFLAGS), так что вы можете использовать это в своих интересах. И, в отличие от справочной страницы, вы можете использовать эти неявные правила без Makefile .

Самый простой способ подумать об этом - это make-файл, который говорит , как создать 'A 'получил' B ', а затем вы указываете make , что вы хотите сделать (например, сделать все ), а не как это сделать. Он определяет отдельные шаги.

6
ответ дан 1 December 2019 в 00:23
поделиться

Вовсе нет. Они похожи в том смысле, что все языки программирования похожи (тем более, что оба они пишут сценарии), но имеют очень разные цели.

цель make-файлов - описать, как построить проект. Обычно это означает создание правил (на специальном языке), которые говорят что-то вроде:

  1. всякий раз, когда вы видите файл, заканчивающийся на .c, запустите на нем программу «gcc», чтобы скомпилировать его в объектный файл «.o».
  2. всякий раз, когда у вас есть куча ".o", свяжите их в ".exe".

Конечно, это упрощенное описание.

Основное преимущество использования make (" интерпретатор »для языка make-файлов) заключается в том, что вы получаете синтаксис, специально созданный для такого рода вещей. Например,

4
ответ дан 1 December 2019 в 00:23
поделиться

Очень интересный вопрос. С помощью сценария оболочки или пакетного файла вы предоставляете своему компьютеру список инструкций, которым нужно следовать по порядку. Он начинается сверху, работает вниз до конца, а затем останавливается. Хорошо, могут быть определения функций, циклы и переходы, которые изменяют точный порядок, в котором что-то происходит, но в основном процесс прохождения файла является линейным.

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

Два разных подхода для выполнения двух разные вещи.

3
ответ дан 1 December 2019 в 00:23
поделиться

Make-файлы - это данные для программы Make. Думайте о них как о том, что делали старики до того, как у них появился XML :)

1
ответ дан 1 December 2019 в 00:23
поделиться

Нет. У make-файла есть особые правила, которые определяют, как файлы зависят друг от друга. Он не обязательно выполняется в том порядке, в котором он написан.

Пакетный файл - это последовательность команд и управляющих операторов.

Make-файлы часто содержат то же самое, что и командные файлы, но командные файлы не имеют прямого способа с указанием зависимостей или предоставлением предполагаемого метода преобразования одного вида файлов в другой.

13
ответ дан 1 December 2019 в 00:23
поделиться

Чтобы придать этому довольно абстрактную форму:

  • Пакетные файлы написаны на императивном языке.
  • Make-файлы написаны на декларативном языке для обработки файлов (который предназначен и обычно используется для управления сборкой).
7
ответ дан 1 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: