Skip to main content

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

Основы Linux. Как управлять сетью (Июнь 2025)

Основы Linux. Как управлять сетью (Июнь 2025)
Anonim

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

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

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

делать -f Makefile вариант … цель …

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

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

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

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

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

Опции

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

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

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

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

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

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

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

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

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

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

-n опция выводит команды, которые будут выполняться, но не выполняет их.

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

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

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

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

-s опция блокирует операцию. Он не печатает команды по мере их выполнения.

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

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

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

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

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