Man page - gmake(1)
Packages contains this manual
Available languages:
en fr es pl da ru ro deManual
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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .