Понимание команд Unix и Linux: make

Цель утилиты make — автоматически определить, какие части большой программы нужно перекомпилировать, и выполнить команды для их перекомпиляции. В руководстве описана реализация make для GNU, написанная Ричардом Столлманом и Роландом Макгрэтом. В этих примерах показаны программы на C, так как они наиболее распространены, но вы можете использовать make с любым языком программирования, чей компилятор можно запустить с помощью команды оболочки. На самом деле, make не ограничивается программами. Вы можете использовать его для описания любой задачи, когда некоторые файлы должны обновляться автоматически от других, когда другие изменяются.

Эта страница является выдержкой из документации по GNU make. Он обновляется только из-за того, что проект GNU не использует nroff. Для полной текущей документации обратитесь к информационному файлу make.info, который сделан из исходного файла Texinfo make.texinfo.  

Синтаксис и подготовка утилиты make

сделать  Makefile ] [опция] … цель …  

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

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

Утилита make выполняет команды в make-файле для обновления одного или нескольких целевых имен, где name, как правило, является программой. Если нет  опция присутствует, make будет искать make-файлы GNUmakefile, Makefile, а также Makefile, в этой последовательности.

Обычно вы должны вызывать ваш makefile либо makefile, либо Makefile. (Рекомендуется использовать Makefile, потому что он появляется в начале списка каталогов, рядом с другими важными файлами, такими как ПРОЧТИ МЕНЯ.Первый проверенный имя, GNUmakefile, не рекомендуется для большинства make-файлов. Вам следует использовать это имя, если у вас есть make-файл, специфичный для GNU make, и он не будет понят для других версий make. Если Makefile является , стандартный ввод читается.

сделать Утилита обновляет цель, если она зависит от обязательных файлов, которые были изменены с момента последнего изменения цели, или если цель не существует.  

Параметры

а также параметры игнорируются для совместимости с другими версиями make.

-C реж изменится на каталог dir перед чтением make-файлов или выполнением чего-либо еще. Если несколько  параметры указаны, каждый интерпретируется относительно предыдущего: -С -C и т.д. эквивалентно -С / и т.д.. Это обычно используется с рекурсивными вызовами make.

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

Опция дает переменные, взятые из приоритета среды над переменными из make-файлов.

-е файл опция использует файл как make-файл.

опция игнорирует все ошибки в командах, выполненных для переделки файлов.

-я реж опция указывает директорию каталога для поиска включенных make-файлов. Если несколько  Параметры используются для указания нескольких каталогов, поиск по каталогам осуществляется в указанном порядке. В отличие от аргументов других флагов make, каталоги с  флаги могут идти сразу после флага: -Idir разрешено, а также -Я реж. Этот синтаксис разрешен для совместимости с препроцессором C  флаг.

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

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

-L а также -л нагрузки параметры указывают, что никакие новые задания (команды) не должны запускаться, если выполняются другие задания, а средняя загрузка по крайней мере нагрузка (число с плавающей запятой). Без аргументов удаляет предыдущий лимит загрузки.

-N Параметр выводит команды, которые будут выполнены, но не выполняет их.

-о файл опция не переделывает файл, даже если он старше, чем его зависимости, и ничего не переделывает из-за изменений в файл. По сути, файл считается очень старым, а его правила игнорируются.

-п Параметр выводит базу данных (правила и значения переменных), полученную в результате чтения make-файлов. Затем он выполняется как обычно или как указано иначе. Это также печатает информацию о версии, предоставленную -v переключатель (см. ниже). Чтобы распечатать базу данных, не пытаясь переделать какие-либо файлы, используйте сделать -п -е / DEV / нуль.

-Q Опция устанавливает режим вопроса. Не выполняйте никаких команд и ничего не печатайте, просто верните состояние выхода, которое равно нулю, если указанные цели уже обновлены, в противном случае — ненулевое значение.

Опция исключает использование встроенных неявных правил. Также очищает список суффиксов по умолчанию для правил суффиксов.

-s опция заставляет замолчать операцию. Это не печатает команды, поскольку они выполнены.

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

-T опция касается файлов (помечает их как актуальные, без их реального изменения) вместо запуска их команд. Это используется, чтобы сделать вид, что команды были выполнены, чтобы обмануть будущие вызовы make.

-v option печатает версию программы make, а также авторские права, список авторов и уведомление об отсутствии гарантии.

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

-W опция файла делает вид, что цель файл только что был изменен. При использовании с -N флаг, это показывает вам, что произойдет, если вы измените этот файл. Без -N, это почти так же, как бег потрогать Команда на данный файл перед запуском make, за исключением того, что время модификации изменяется только в воображении make.

Ссылка на основную публикацию