for ((i = 0 ; i < max ; i++ )); do echo "$i"; done
Установите DDevExtensions от Андреаса Хаусладена.
В последней версии:
Версия 2.0 (13.09.2009)
Добавлено: поддержка Embarcadero RAD Studio 2010
.
И в завершение я должен добавить, что make также является макропроцессором. Он ориентирован на системы сборки программного обеспечения, поэтому он обеспечивает манипуляции с символическими элементами в своей проблемной области, такими как имена источников и целей.
Теперь make не является специально экспертной системой общего назначения, 1 , но он делает больше, чем просто упаковывает шелл-код, и технически он соответствует определению экспертной системы.
Make содержит механизм вывода . Все версии make имеют суффиксные правила , некоторые версии также реализуют шаблонные правила . В сочетании с вашей спецификацией (больше правил, обычно определяющих программное приложение) в результате получается экспертная система , которая решает, что нужно скомпилировать, связать, купить на eBay ,
Makefile перечисляет команды, которые выполняются, но они структурированы иначе, чем список последовательных команд. Вместо этого у них есть цели и команды, чтобы «сделать» их. Затем make
проверяет перечисленные зависимости и видит, какие цели необходимо обновить, чтобы выполнить то, что вы ему сказали. Существует множество неявных правил (учитывая, что файл * .c, make уже знает, как скомпилировать его в * .o и даже создать исполняемый файл!) И стандартных переменных (например, CFLAGS), так что вы можете использовать это в своих интересах. И, в отличие от справочной страницы, вы можете использовать эти неявные правила без Makefile
.
Самый простой способ подумать об этом - это make-файл, который говорит , как создать 'A 'получил' B ', а затем вы указываете make , что вы хотите сделать (например, сделать все
), а не как это сделать. Он определяет отдельные шаги.
Вовсе нет. Они похожи в том смысле, что все языки программирования похожи (тем более, что оба они пишут сценарии), но имеют очень разные цели.
цель make-файлов - описать, как построить проект. Обычно это означает создание правил (на специальном языке), которые говорят что-то вроде:
Конечно, это упрощенное описание.
Основное преимущество использования make (" интерпретатор »для языка make-файлов) заключается в том, что вы получаете синтаксис, специально созданный для такого рода вещей. Например,
Очень интересный вопрос. С помощью сценария оболочки или пакетного файла вы предоставляете своему компьютеру список инструкций, которым нужно следовать по порядку. Он начинается сверху, работает вниз до конца, а затем останавливается. Хорошо, могут быть определения функций, циклы и переходы, которые изменяют точный порядок, в котором что-то происходит, но в основном процесс прохождения файла является линейным.
Makefiles, с другой стороны, дайте серию инструкций о том, как сделать одни вещи из других вещей. Когда вы вызываете make
, вы говорите ему, что вы хотите, и он анализирует имеющиеся у него инструкции и решает, какие из них необходимо выполнить, чтобы достичь указанной цели. В результате то, что происходит, когда вы вызываете make-файл, зависит не только от содержимого самого файла, но и от того, что вы просили его сделать, и в каком состоянии находятся ваши файлы в этот момент.
Два разных подхода для выполнения двух разные вещи.
Make-файлы - это данные для программы Make. Думайте о них как о том, что делали старики до того, как у них появился XML :)
Нет. У make-файла есть особые правила, которые определяют, как файлы зависят друг от друга. Он не обязательно выполняется в том порядке, в котором он написан.
Пакетный файл - это последовательность команд и управляющих операторов.
Make-файлы часто содержат то же самое, что и командные файлы, но командные файлы не имеют прямого способа с указанием зависимостей или предоставлением предполагаемого метода преобразования одного вида файлов в другой.
Чтобы придать этому довольно абстрактную форму: