Цель утилиты 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.