.\" -*- coding: UTF-8 -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH MAKE 1 "26 мая 2023 г." GNU "Команды пользователя" .SH ИМЯ make — утилита GNU Make для управления сборкой групп программ .SH СИНТАКСИС \fBmake\fP [\fIПАРАМЕТР\fP]... [\fIЦЕЛЬ\fP]... .SH ОПИСАНИЕ .LP Утилита \fImake\fP автоматически определяет, какие части большой программы необходимо пересобрать, и выполняет команды для их пересборки. Данное руководство описывает реализацию \fBmake\fP от GNU, которая была написана Ричардом Столлманом (Richard Stallman) и Роландом Макгратом (Roland McGrath) и в настоящее время сопровождается Полом Смитом (Paul Smith). В наших примерах приводятся программы на C, так как они очень распространены, однако вы можете использовать \fBmake\fP с любым языком программирования, компилятор которого поддерживает запуск из командной строки. На самом деле, использование \fBmake\fP не ограничено программами. Вы можете использовать данную утилиту для описания любой задачи, в которой содержимое одних файлов должно быть автоматически обновлено на основе других файлов в случае изменения последних. .LP Чтобы подготовиться к использованию \fBmake\fP, вам необходимо написать так называемый \fImake\-файл\fP, который описывает взаимосвязи между файлами в вашей программе и содержит команды для обновления каждого файла. В программе, как правило, исполняемый файл обновляется на основе объектных файлов, которые, в свою очередь, создаются путём компиляции файлов с исходным кодом. .LP После того как подходящий make\-файл создан, каждый раз, когда вы меняете какие\-либо исходные файлы, следующей команды: .sp 1 .RS \fBmake\fP .RE .sp 1 будет достаточно, чтобы осуществить все необходимые перекомпиляции. Программа \fBmake\fP использует описание в make\-файле и информацию о времени последнего изменения файлов, чтобы решить, какие файлы требуют обновления. Для каждого из таких файлов она выполняет команды, указанные в make\-файле. .LP \fBmake\fP выполняет команды из \fImake\-файла\fP для обновления одной или нескольких \fIцелей\fP, где \fIцель\fP — это, как правило, программа. Если не указан параметр \fB\-f\fP, \fBmake\fP проверяет наличие make\-файлов \fIGNUmakefile\fP, \fImakefile\fP и \fIMakefile\fP в приведённом порядке. .LP Обычно вам следует называть свои make\-файлы \fImakefile\fP или \fIMakefile\fP. (Мы рекомендуем \fIMakefile\fP, так как он отображается на видном месте в начале списка содержимого каталога, рядом с другими важными файлами, такими как \fIREADME\fP.) Имя \fIGNUmakefile\fP, которое проверяется первым, не рекомендуется для большинства make\-файлов. Вам следует использовать это имя только для make\-файлов, которые специфичны для GNU Make и не могут быть прочитаны другими версиями \fBmake\fP. Если вместо \fImake\-файла\fP указан '\-', то будет использоваться стандартный поток ввода. .LP \fBmake\fP обновляет цель, если она зависит от файлов, которые были изменены с момента последнего изменения цели, или если цель не существует. .SH ПАРАМЕТРЫ .sp 1 .TP 0.5i \fB\-b\fP, \fB\-m\fP Данные параметры игнорируются для совместимости с другими версиями \fBmake\fP. .TP 0.5i \fB\-B\fP, \fB\-\-always\-make\fP Выполнять безусловную сборку всех целей. .TP 0.5i \fB\-C\fP \fIкаталог\fP, \fB\-\-directory\fP=\fIкаталог\fP Перейти в \fIкаталог\fP перед чтением make\-файлов или выполнением каких\-либо других действий. Если указано несколько параметров \fB\-C\fP, каждый рассматривается относительно предыдущего: \fB\-C \fP/ \fB\-C \fPetc равносильно указанию \fB\-C \fP/etc. Данный параметр обычно используется при рекурсивных вызовах \fBmake\fP. .TP 0.5i \fB\-d\fP Вывести отладочную информацию в дополнение к обычному выводу. Отладочная информация описывает, для каких файлов рассматривается необходимость пересоздания, какие временные метки сравниваются и каковы результаты сравнения, какие файлы действительно должны быть пересобраны, какие неявные правила учитываются и какие из них применяются – всё, что может быть интересно знать о решениях, которые принимает \fBmake\fP. .TP 0.5i \fB\-\-debug\fP\fI[=ФЛАГИ]\fP Вывести отладочную информацию в дополнение к обычному выводу. Если \fIФЛАГИ\fP не указаны, поведение будет соответствовать параметру \fB\-d\fP. \fIФЛАГИ\fP могут содержать любые из следующих имён, разделённых запятыми или пробелами; значение имеет только первый символ в имени флага, остальные могут быть опущены: \fIall\fP для вывода всей отладочной информации (той же, что и при использовании \fB\-d\fP), \fIbasic\fP для базовой отладки, \fIverbose\fP для более подробной базовой отладки, \fIimplicit\fP для отображения операций поиска по неявным правилам, \fIjobs\fP для получения подробностей о выполнении команд, \fImakefile\fP для отладки при пересоздании make\-файлов, \fIprint\fP для отображения всех исполняемых рецептов, даже если их вывод подавляется, и \fIwhy\fP для вывода причин, по которым \fBmake\fP приняла решение пересобрать те или иные цели. Используйте \fInone\fP для отключения всех предшествующих флагов отладки. .TP 0.5i \fB\-e\fP, \fB\-\-environment\-overrides\fP Считать переменные среды более приоритетными, чем переменные из make\-файлов. .TP 0.5i \fB\-E\fP \fIстрока\fP, \fB\-\-eval\fP \fIстрока\fP Интерпретировать указанную \fIстроку\fP с помощью функции \fBeval\fP, прежде чем разбирать какие\-либо make\-файлы. .TP 0.5i \fB\-f\fP \fIфайл\fP, \fB\-\-file\fP=\fIфайл\fP, \fB\-\-makefile\fP=\fIфайл\fP Использовать \fIфайл\fP в качестве make\-файла. .TP 0.5i \fB\-i\fP, \fB\-\-ignore\-errors\fP Игнорировать все ошибки в командах, исполняемых при пересборке файлов. .TP 0.5i \fB\-I\fP \fIкаталог\fP, \fB\-\-include\-dir\fP=\fIкаталог\fP Задаёт \fIкаталог\fP для поиска включаемых make\-файлов. Если несколько параметров \fB\-I\fP используются для задания нескольких каталогов, каталоги просматриваются в указанном порядке. В отличие от аргументов для других параметров \fBmake\fP, имена каталогов, указанные с флагом \fB\-I\fP, могут следовать сразу за флагом: допустимо использование \fB\-I\fP\fIкаталог\fP, а также \fB\-I\fP \fIкаталог\fP. Данный синтаксис разрешён для совместимости с флагом \fB\-I\fP препроцессора C. .TP 0.5i \fB\-j\fP [\fIзадания\fP], \fB\-\-jobs\fP[=\fIзадания\fP] Задаёт количество \fIзаданий\fP (команд), которые могут выполняться одновременно. При указании нескольких параметров \fB\-j\fP учитывается последний из них. Если параметр \fB\-j\fP передан без аргументов, \fBmake\fP не будет ограничивать количество одновременно выполняемых заданий. .TP 0.5i \fB\-\-jobserver\-style=\fP\fIтип\fP Определяет используемый тип сервера заданий. В качестве \fIтипа\fP могут быть указаны \fBfifo\fP, \fBpipe\fP или \fBsem\fP (только в Windows). .TP 0.5i \fB\-k\fP, \fB\-\-keep\-going\fP После возникновения ошибки продолжать выполнение, насколько это возможно. Хотя цель, сборка которой не удалась, а также цели, зависящие от неё, не смогут быть пересобраны, другие зависимости этих целей будут обработаны. .TP 0.5i \fB\-l\fP [\fIзагруженность\fP], \fB\-\-load\-average\fP[=\fIзагруженность\fP] Указывает, что новые задания (команды) не должны запускаться, если уже выполняются другие задания и средняя \fIзагруженность\fP системы достигла заданного значения (числа с плавающей запятой). При отсутствии аргумента убирает заданное ранее ограничение. .TP 0.5i \fB\-L\fP, \fB\-\-check\-symlink\-times\fP Учитывать самое позднее время mtime у цели и символьных ссылок на неё. .TP 0.5i \fB\-n\fP, \fB\-\-just\-print\fP, \fB\-\-dry\-run\fP, \fB\-\-recon\fP Вывести команды, которые были бы выполнены, но не выполнять их (кроме особых случаев). .TP 0.5i \fB\-o\fP \fIфайл\fP, \fB\-\-old\-file\fP=\fIфайл\fP, \fB\-\-assume\-old\fP=\fIфайл\fP Не пересобирать \fIфайл\fP, даже если он старее своих зависимостей. Также не пересобирать что\-либо, основываясь на изменениях в \fIфайле\fP. Другими словами, указанный файл рассматривается как очень старый, и связанные с ним правила игнорируются. .TP 0.5i \fB\-O\fP[\fIтип\fP], \fB\-\-output\-sync\fP[=\fIтип\fP] При параллельном выполнении нескольких заданий с помощью \fB\-j\fP обеспечить, чтобы выходные данные каждого задания были собраны вместе, а не перемешаны с выводом других заданий. Если \fIтип\fP не указан или указан как \fBtarget\fP, выходные данные всего рецепта целиком для каждой цели будут объединены. Если \fIтип\fP задан как \fBline\fP, будет объединён вывод каждой командной строки в составе рецепта. Если \fIтип\fP задан как \fBrecurse\fP, все выходные данные из рекурсивного make будут объединены. Если \fIтип\fP задан как \fBnone\fP, синхронизация вывода будет отключена. .TP 0.5i \fB\-p\fP, \fB\-\-print\-data\-base\fP Вывести базу данных (правила и значения переменных), полученную в результате чтения make\-файлов; после этого продолжить выполнение как обычно или в соответствии с заданными параметрами. Данный параметр также отображает информацию о версии, возвращаемую флагом \fB\-v\fP (см. ниже). Чтобы вывести базу данных, не пытаясь пересобрать какие\-либо файлы, используйте \fImake \-p \-f/dev/null\fP. .TP 0.5i \fB\-q\fP, \fB\-\-question\fP «Режим вопроса». Не выполнять никаких команд и не выводить ничего, вернуть нулевой код завершения, если указанные цели уже находятся в актуальном состоянии, в противном случае вернуть ненулевой код завершения. .TP 0.5i \fB\-r\fP, \fB\-\-no\-builtin\-rules\fP Исключить использование встроенных неявных правил. Также очистить список суффиксов по умолчанию для правил суффиксов. .TP 0.5i \fB\-R\fP, \fB\-\-no\-builtin\-variables\fP Не задавать встроенные переменные. .TP 0.5i \fB\-s\fP, \fB\-\-silent\fP, \fB\-\-quiet\fP «Тихий» режим работы: не выводить команды в процессе их выполнения. .TP 0.5i \fB\-\-no\-silent\fP Отменить действие параметра \fB\-s\fP. .TP 0.5i \fB\-S\fP, \fB\-\-no\-keep\-going\fP, \fB\-\-stop\fP Отменить действие параметра \fB\-k\fP. .TP 0.5i \fB\-t\fP, \fB\-\-touch\fP Обновить дату изменения файлов, не меняя их содержимое и не выполняя связанные с ними команды. Данный параметр позволяет притвориться, что команды были выполнены, и обмануть будущие вызовы \fBmake\fP. .TP 0.5i \fB\-\-trace\fP Вывести информацию о порядке обработки каждой цели (почему цель пересобирается и какие команды используются для её пересборки). .TP 0.5i \fB\-v\fP, \fB\-\-version\fP Вывести информацию о версии программы \fBmake\fP и авторских правах на неё, а также список авторов и уведомление об отсутствии гарантий. .TP 0.5i \fB\-w\fP, \fB\-\-print\-directory\fP Вывести сообщение, содержащее рабочий каталог до и после обработки. Это может оказаться полезным при отслеживании ошибок в сложных условиях вложенности рекурсивных команд \fBmake\fP. .TP 0.5i \fB\-\-no\-print\-directory\fP Отключить параметр \fB\-w\fP, даже если он был включён неявно. .TP 0.5i \fB\-\-shuffle\fP\fI[=РЕЖИМ]\fP Включить перемешивание порядка целей и зависимостей. \fIРЕЖИМ\fP может принимать одно из следующих значений: \fInone\fP для отключения перемешивания, \fIrandom\fP для перемешивания зависимостей в случайном порядке, \fIreverse\fP для учёта зависимостей в обратном порядке или целочисленное \fI<зерно>\fP для включения режима \fIrandom\fP с заданным значением \fIзерна\fP. Если \fIРЕЖИМ\fP не указан, по умолчанию используется \fIrandom\fP. .TP 0.5i \fB\-W\fP \fIфайл\fP, \fB\-\-what\-if\fP=\fIфайл\fP, \fB\-\-new\-file\fP=\fIфайл\fP, \fB\-\-assume\-new\fP=\fIфайл\fP Сделать вид, что целевой \fIфайл\fP был только что изменён. При использовании с флагом \fB\-n\fP данный параметр показывает, что случилось бы, если бы вы модифицировали заданный файл. Без флага \fB\-n\fP данный параметр практически идентичен выполнению команды \fItouch\fP над заданным файлом перед запуском \fBmake\fP, однако время изменения файла меняется только в представлении \fBmake\fP. .TP 0.5i \fB\-\-warn\-undefined\-variables\fP Предупреждать при обращении к необъявленной переменной. .SH "КОД ЗАВЕРШЕНИЯ" GNU Make завершается с нулевым кодом, если все make\-файлы были успешно обработаны, и сборка всех целей завершилась без ошибок. Код, равный единице, будет возвращён, если использовался флаг \fB\-q\fP и \fBmake\fP обнаружила цели, которые нуждаются в пересборке. Код, равный двум, будет возвращён, если были выявлены ошибки. .SH "СМОТРИТЕ ТАКЖЕ" Полная документация для \fBmake\fP ведётся в форме руководства Texinfo. Если программы \fBinfo\fP и \fBmake\fP корректно установлены в вашей системе, команда .IP \fBinfo make\fP .PP должна предоставить вам доступ к полному руководству. .SH ОШИБКИ См. раздел «Problems and Bugs» в \fIThe GNU Make Manual\fP. .SH АВТОРЫ Данная страница руководства была подготовлена Деннисом Морсом (Dennis Morse) из Стэнфордского университета. Дополнительные обновления внесены Майком Фрайзингером (Mike Frysinger). Страница была переработана Роландом Макгратом (Roland McGrath) и сопровождается Полом Смитом (Paul Smith). .SH "АВТОРСКИЕ ПРАВА" Copyright \(co 1992\-1993, 1996\-2023 Free Software Foundation, Inc. Данный файл является частью \fIGNU Make\fP. .LP GNU Make — это свободное программное обеспечение: вы можете распространять и/или изменять его, соблюдая условия Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения; либо редакции 3 лицензии, либо (на ваше усмотрение) любой редакции, выпущенной позднее. .LP GNU Make распространяется в надежде на то, что окажется полезной, но БЕЗ КАКИХ\-ЛИБО ГАРАНТИЙ, даже без подразумеваемых гарантий ОКУПАЕМОСТИ или СООТВЕТСТВИЯ КОНКРЕТНЫМ ЦЕЛЯМ. За подробностями обратитесь к тексту Стандартной общественной лицензии GNU. .LP Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если это не так, посетите \fIhttps://www.gnu.org/licenses/licenses.ru.html\fP. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Андрей Догадкин . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .