Руководства по командной строке

Man » Онлайн-руководство по make - подробная онлайн-документация для страницы руководства make

🌍
make - утилита GNU Make для управления группами программ

СИНТАКСИС

make [ОПЦИЯ]... [ЦЕЛЬ]...

ОПИСАНИЕ

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

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

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

make

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

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

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

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

ОПЦИИ

-b, -m

Эти опции игнорируются для обеспечения совместимости с другими версиями make.

-B, --always-make

Безусловно, выполнить создание всех целей.

-C dir, --directory=dir

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


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

--debug[=FLAGS]

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

-e, --environment-overrides

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

-E string, --eval string

Интерпретирует строку с помощью функции eval перед анализом каких-либо файлов makefile.

-f file, --file=file, --makefile=FILE

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

-i, --ignore-errors

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

-I dir, --include-dir=dir

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

-j [jobs], --jobs[=jobs]

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

--jobserver-style=style

Стиль используемого jobserver. Стиль может быть одним из fifo, pipe или sem (только для Windows).

-k, --keep-going

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

-l [load], --load-average[=load]

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

-L, --check-symlink-times

Использует самое последнее время изменения между символическими ссылками и целевым объектом.

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

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


-o файл, --old-file=файл, --assume-old=файл
Не пересоздавать файл `файл`, даже если он старше своих зависимостей, и не пересоздавать ничего из-за изменений в файле. По сути, файл рассматривается как очень старый, и его правила игнорируются.

-O[тип], --output-sync[=тип]
При одновременном выполнении нескольких задач с помощью `-j`, обеспечить сбор выходных данных каждой задачи вместе, а не их перемежение с выходными данными других задач. Если `тип` не указан или равен `target`, выходные данные для всей рецептуры для каждой цели группируются вместе. Если `тип` равен `line`, выходные данные каждой строки команды в рецептуре группируются вместе. Если `тип` равен `recurse`, выходные данные всей рекурсивной сборки группируются вместе. Если `тип` равен `none`, синхронизация выходных данных отключается.

-p, --print-data-base
Вывести базу данных (правила и значения переменных), полученную в результате чтения файлов сборки; затем выполнить как обычно или другим способом, как указано. Это также выводит информацию о версии, предоставляемую переключателем `-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` для рассмотрения зависимостей в обратном порядке или целое число `<seed>`, которое включает случайный режим с определенным значением начального числа. Если `РЕЖИМ` не указан, по умолчанию используется `random`.

-W файл, --what-if=файл, --new-file=файл, --assume-new=файл
Притвориться, что целевой файл был только что изменен. При использовании с флагом `-n`, это показывает, что произойдет, если вы измените этот файл. Без `-n`, это почти то же самое, что и выполнение команды `touch` для данного файла перед запуском `make`, за исключением того, что время изменения изменяется только в воображении `make`.

--warn-undefined-variables

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

СТАТУС ВЫХОДА

GNU Make завершается со статусом 0, если все файлы Make успешно разобраны и ни одна из построенных целей не завершилась с ошибкой. Статус 1 возвращается, если использован флаг -q и make определяет, что цель необходимо перестроить. Статус 2 возвращается, если возникли какие-либо ошибки.

СМ. ТАКЖЕ

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

info make

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

ОШИБКИ

См. главу «Проблемы и ошибки» в руководстве GNU Make.

АВТОР

Эта страница руководства предоставлена Деннисом Морсом из Стэнфордского университета. Дальнейшие обновления предоставлены Майком Фрайзингером. Она была переработана Роландом МакГрэтом. Поддерживается Полом Смитом.

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

Авторское право © 1992-1993, 1996-2023 Free Software Foundation, Inc. Этот файл является частью GNU Make.

GNU Make является бесплатным программным обеспечением; вы можете распространять и/или изменять его в соответствии с условиями лицензии GNU General Public License, опубликованной Free Software Foundation; либо версия 3 лицензии, либо (по вашему выбору) любая более поздняя версия.

GNU Make распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Подробности см. в лицензии GNU General Public License.

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