Man page - gmake(1)

Packages contains this manual

Available languages:

en fr es pl da ru ro de

Manual

MAKE

НАИМЕНОВАНИЕ
ОБЗОР
ОПИСАНИЕ
ПАРАМЕТРЫ
КОД ЗАВЕРШЕНИЯ
СМОТРИТЕ ТАКЖЕ
ОШИБКИ
АВТОРЫ
АВТОРСКИЕ ПРАВА
ПЕРЕВОД

НАИМЕНОВАНИЕ

make — утилита GNU Make для управления сборкой групп программ

ОБЗОР

make [ ПАРАМЕТР ]... [ ЦЕЛЬ ]...

ОПИСАНИЕ

Утилита make автоматически определяет, какие части большой программы необходимо пересобрать, и выполняет команды для их пересборки. Данное руководство описывает реализацию make от GNU, которая была написана Ричардом Столлманом (Richard Stallman) и Роландом Макгратом (Roland McGrath) и в настоящее время сопровождается Полом Смитом (Paul Smith). В наших примерах приводятся программы на C, так как они очень распространены, однако вы можете использовать make с любым языком программирования, компилятор которого поддерживает запуск из командной строки. На самом деле, использование make не ограничено программами. Вы можете использовать данную утилиту для описания любой задачи, в которой содержимое одних файлов должно быть автоматически обновлено на основе других файлов в случае изменения последних.

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

После того как подходящий make-файл создан, каждый раз, когда вы меняете какие-либо исходные файлы, следующей команды:

make

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

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

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

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

ПАРАМЕТРЫ

-b , -m

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

-B , --always-make

Выполнять безусловную сборку всех целей.

-C каталог , --directory = каталог

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

-d

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

--debug [=ФЛАГИ]

Вывести отладочную информацию в дополнение к обычному выводу. Если ФЛАГИ не указаны, поведение будет соответствовать параметру -d . ФЛАГИ могут содержать любые из следующих имён, разделённых запятыми или пробелами; значение имеет только первый символ в имени флага, остальные могут быть опущены: all для вывода всей отладочной информации (той же, что и при использовании -d ), basic для базовой отладки, verbose для более подробной базовой отладки, implicit для отображения операций поиска по неявным правилам, jobs для получения подробностей о выполнении команд, makefile для отладки при пересоздании make-файлов, print для отображения всех исполняемых рецептов, даже если их вывод подавляется, и why для вывода причин, по которым make приняла решение пересобрать те или иные цели. Используйте none для отключения всех предшествующих флагов отладки.

-e , --environment-overrides

Считать переменные среды более приоритетными, чем переменные из make-файлов.

-E строка , --eval строка

Интерпретировать указанную строку с помощью функции eval , прежде чем разбирать какие-либо make-файлы.

-f файл , --file = файл , --makefile = файл

Использовать файл в качестве make-файла.

-i , --ignore-errors

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

-I каталог , --include-dir = каталог

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

-j [ задания ], --jobs [= задания ]

Задаёт количество заданий (команд), которые могут выполняться одновременно. При указании нескольких параметров -j учитывается последний из них. Если параметр -j передан без аргументов, make не будет ограничивать количество одновременно выполняемых заданий.

--jobserver-style= тип

Определяет используемый тип сервера заданий. В качестве типа могут быть указаны fifo , pipe или sem (только в Windows).

-k , --keep-going

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

-l [ загруженность ], --load-average [= загруженность ]

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

-L , --check-symlink-times

Учитывать самое позднее время mtime у цели и символьных ссылок на неё.

-n , --just-print , --dry-run , --recon

Вывести команды, которые были бы выполнены, но не выполнять их (кроме особых случаев).

-o файл , --old-file = файл , --assume-old = файл

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

-O [ тип ], --output-sync [= тип ]

При параллельном выполнении нескольких заданий с помощью -j обеспечить, чтобы выходные данные каждого задания были собраны вместе, а не перемешаны с выводом других заданий. Если тип не указан или указан как target , выходные данные всего рецепта целиком для каждой цели будут объединены. Если тип задан как line , будет объединён вывод каждой командной строки в составе рецепта. Если тип задан как recurse , все выходные данные из рекурсивного make будут объединены. Если тип задан как none , синхронизация вывода будет отключена.

-p , --print-data-base

Вывести базу данных (правила и значения переменных), полученную в результате чтения make-файлов; после этого продолжить выполнение как обычно или в соответствии с заданными параметрами. Данный параметр также отображает информацию о версии, возвращаемую флагом -v (см. ниже). Чтобы вывести базу данных, не пытаясь пересобрать какие-либо файлы, используйте make -p -f/dev/null .

-q , --question

«Режим вопроса». Не выполнять никаких команд и не выводить ничего, вернуть нулевой код завершения, если указанные цели уже находятся в актуальном состоянии, в противном случае вернуть ненулевой код завершения.

-r , --no-builtin-rules

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

-R , --no-builtin-variables

Не задавать встроенные переменные.

-s , --silent , --quiet

«Тихий» режим работы: не выводить команды в процессе их выполнения.

--no-silent

Отменить действие параметра -s .

-S , --no-keep-going , --stop

Отменить действие параметра -k .

-t , --touch

Обновить дату изменения файлов, не меняя их содержимое и не выполняя связанные с ними команды. Данный параметр позволяет притвориться, что команды были выполнены, и обмануть будущие вызовы make .

--trace

Вывести информацию о порядке обработки каждой цели (почему цель пересобирается и какие команды используются для её пересборки).

-v , --version

Вывести информацию о версии программы make и авторских правах на неё, а также список авторов и уведомление об отсутствии гарантий.

-w , --print-directory

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

--no-print-directory

Отключить параметр -w , даже если он был включён неявно.

--shuffle [=РЕЖИМ]

Включить перемешивание порядка целей и зависимостей. РЕЖИМ может принимать одно из следующих значений: none для отключения перемешивания, random для перемешивания зависимостей в случайном порядке, reverse для учёта зависимостей в обратном порядке или целочисленное <зерно> для включения режима random с заданным значением зерна . Если РЕЖИМ не указан, по умолчанию используется random .

-W файл , --what-if = файл , --new-file = файл , --assume-new = файл

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

--warn-undefined-variables

Предупреждать при обращении к необъявленной переменной.

КОД ЗАВЕРШЕНИЯ

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

СМОТРИТЕ ТАКЖЕ

Полная документация для make ведётся в форме руководства Texinfo. Если программы info и make корректно установлены в вашей системе, команда

info make

должна предоставить вам доступ к полному руководству.

ОШИБКИ

См. раздел «Problems and Bugs» в The GNU Make Manual .

АВТОРЫ

Данная страница руководства была подготовлена Деннисом Морсом (Dennis Morse) из Стэнфордского университета. Дополнительные обновления внесены Майком Фрайзингером (Mike Frysinger). Страница была переработана Роландом Макгратом (Roland McGrath) и сопровождается Полом Смитом (Paul Smith).

АВТОРСКИЕ ПРАВА

Copyright © 1992-1993, 1996-2023 Free Software Foundation, Inc. Данный файл является частью GNU Make .

GNU Make — это свободное программное обеспечение: вы можете распространять и/или изменять его, соблюдая условия Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения; либо редакции 3 лицензии, либо (на ваше усмотрение) любой редакции, выпущенной позднее.

GNU Make распространяется в надежде на то, что окажется полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, даже без подразумеваемых гарантий ОКУПАЕМОСТИ или СООТВЕТСТВИЯ КОНКРЕТНЫМ ЦЕЛЯМ. За подробностями обратитесь к тексту Стандартной общественной лицензии GNU.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если это не так, посетите https://www.gnu.org/licenses/licenses.ru.html .

ПЕРЕВОД

Русский перевод этой страницы руководства разработал(и) Андрей Догадкин <adogadkin@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .