Понимание команд Unix и Linux: make

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

Эта страница является выдержкой из документации GNU make . Она обновляется только из-за того, что проект GNU не использует nroff. Для полной текущей документации обратитесь к информационному файлу make.info, который сделан из исходного файла Texinfo make.texinfo.

Синтаксис и подготовка утилиты make

make [ -f makefile ] [ option ] … target .. ,

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

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

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

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

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

Опции

Параметры -b и -m игнорируются для совместимости с другими версиями make.

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

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

Опция -e дает переменные, взятые из приоритета среды над переменными из make-файлов.

Параметр -f файл использует файл в качестве файла сборки.

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

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

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

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

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

Опция -n печатает команды, которые будут выполнены, но не выполняет их.

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

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

Опция -q задает режим вопросов. Не выполняйте никаких команд и ничего не печатайте, просто верните состояние выхода, которое равно нулю, если указанные цели уже обновлены, в противном случае – ненулевое значение.

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

Параметр -s отключает операцию. Это не печатает команды, поскольку они выполнены.

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

Опция -t касается файлов (помечает их как актуальные, без их реального изменения) вместо запуска их команд. Это используется, чтобы сделать вид, что команды были выполнены, чтобы обмануть будущие вызовы make.

Опция -v печатает версию программы make, а также авторские права, список авторов и уведомление об отсутствии гарантии.

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

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

Оцените статью
Solutics.ru
Добавить комментарий