GNU make
В этом файле документирована утилита GNU make, которая автоматически определяет, какие части большой программы необходимо перекомпилировать, и выдает команды для их перекомпиляции.
Это издание 0.76, последняя обновление от 31 октября 2022 года, Руководства по GNU Make, для GNU make версии 4.4.
Авторские права © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
| • Обзор | Обзор make. |
|
| • Введение | Введение в make. |
|
| • Файлы make | Файлы make говорят make, что делать. |
|
| • Правила | Правила описывают, когда файл необходимо пересоздать. | |
| • Рецепты | Рецепты указывают, как пересоздать файл. | |
| • Использование переменных | Вы можете использовать переменные, чтобы избежать повторений. | |
| • Условные операторы | Используйте или игнорируйте части файла make на основе значений переменных. | |
| • Функции | Многие мощные способы манипулирования текстом. | |
| • Вызов make | Как вызвать make в командной строке. |
|
| • Неявные правила | Используйте неявные правила для обработки многих файлов одинаково, основываясь на их именах файлов. | |
| • Архивы | Как make может обновлять архивы библиотек. |
|
| • Расширение make | Использование расширений для make. |
|
| • Интеграция make | Интеграция make с другими инструментами. |
|
| • Особенности | Особенности GNU make по сравнению с другими make. |
|
| • Отсутствующее | Что GNU make не имеет в отличие от других make. |
|
| • Конвенции для файлов make | Конвенции для написания файлов make для программ GNU. | |
| • Быстрый справочник | Быстрый справочник для опытных пользователей. | |
| • Сообщения об ошибках | Список распространённых ошибок, генерируемых make. |
|
| • Сложный файл make | Реальный пример простого, но нетривиального файла make. | |
| • GNU Лицензия на свободную документацию | Лицензия на копирование данного руководства. | |
| • Индекс понятий | Индекс понятий. | |
| • Индекс имён | Индекс функций, переменных и директив. | |
— The Detailed Node Listing —
Overview of | ||
| • Подготовка | Подготовка и запуск make. |
|
| • Чтение | О чтении этого текста. | |
| • Ошибки | Проблемы и ошибки. | |
An Introduction to Makefiles | ||
| • Введение в правила | Как выглядит правило. | |
| • Простой файл make | Простой файл make. | |
| • Как работает Make | Как make обрабатывает этот файл make. |
|
| • Переменные упрощают | Переменные упрощают файлы make. | |
| • Make выводит | Позволение make выводить рецепты. |
|
| • Объединение по предшествующим условиям | Ещё один стиль файла make. | |
| • Очистка | Правила для очистки каталога. | |
Writing Makefiles | ||
| • Содержание файла make | Что содержат файлы make. | |
| • Имена файлов make | Как называть ваш файл make. | |
| • Включить | Как один файл make может использовать другой файл make. | |
| • Переменная MAKEFILES | Окружающая среда может указать дополнительные файлы make. | |
| • Пересоздание файлов make | Как файлы make пересоздаются. | |
| • Переопределение файлов make | Как переопределить часть одного файла make другим файлом make. | |
| • Чтение файлов make | Как файлы make читаются. | |
| • Парсинг файлов make | Как парсятся файлы make. | |
| • Вторичное расширение | Как и когда выполняется вторичное расширение. | |
What Makefiles Contain | ||
| • Разделение строк | Разделение длинных строк в файлах make | |
Writing Rules | ||
| • Пример правила | Объяснённый пример. | |
| • Синтаксис правила | Объяснённый общий синтаксис. | |
| • Типы предшествующих условий | Существует два типа предшествующих условий. | |
| • Подстановочные знаки | Использование символов подстановки, таких как ‘*’. | |
| • Поиск в каталоге | Поиск исходных файлов в других каталогах. | |
| • Фейковые цели | Использование цели, которая не является именем реального файла. | |
| • Цели принудительного выполнения | Вы можете использовать цель без рецепта или предшествующих условий, чтобы отметить другие цели как фейковые. | |
| • Пустые цели | Когда важна только дата, а файлы пусты. | |
| • Специальные цели | Цели со специальными встроенными значениями. | |
| • Несколько целей | Когда следует использовать несколько целей в правиле. | |
| • Несколько правил | Как использовать несколько правил для одной цели. | |
| • Статические шаблоны | Статические шаблоны правил применяются к нескольким целям и могут изменять предшествующие условия в соответствии с именем цели. | |
| • Двоеточие | Как использовать специальный вид правила, чтобы разрешить несколько независимых правил для одной цели. | |
| • Автоматические предшествующие условия | Как автоматически генерировать правила, дающие предшествующие условия из самих исходных файлов. | |
Using Wildcard Characters in File Names | ||
| • Примеры подстановочных знаков | Несколько примеров. | |
| • Ловушка подстановочных знаков | Проблемы, которых следует избегать. | |
| • Функция подстановочных знаков | Как вызвать расширение подстановочных знаков там, где оно обычно не происходит. | |
Searching Directories for Prerequisites | ||
|---|---|---|
| • Общий поиск | Указание пути поиска, который применяется ко всем предварительным условиям. | |
| • Выборочный поиск | Указание пути поиска для указанного класса имён. | |
| • Алгоритм поиска | Когда и как применяются пути поиска. | |
| • Рецепты/Поиск | Как писать рецепты, которые работают совместно с путями поиска. | |
| • Неявный/Поиск | Как пути поиска влияют на неявные правила. | |
| • Библиотеки/Поиск | Поиск каталогов для библиотек ссылок. | |
Static Pattern Rules | ||
| • Статическое использование | Синтаксис статических правил шаблонов. | |
| • Статическое против неявного | Когда они лучше, чем неявные правила? | |
Writing Recipes in Rules | ||
| • Синтаксис рецептов | Особенности и подводные камни синтаксиса рецептов. | |
| • Эхо-вывод | Как управлять временем эхо-вывода рецептов. | |
| • Выполнение | Как выполняются рецепты. | |
| • Параллельно | Как рецепты могут выполняться параллельно. | |
| • Ошибки | Что происходит после ошибки выполнения рецепта. | |
| • Прерывания | Что происходит, когда рецепт прерывается. | |
| • Рекурсия | Вызов make из make-файлов. |
|
| • Готовые рецепты | Определение готовых рецептов. | |
| • Пустые рецепты | Определение полезных рецептов без действий. | |
Recipe Syntax | ||
| • Разделение строк рецептов | Разбивка длинных строк рецептов для улучшения читаемости. | |
| • Переменные в рецептах | Использование make переменных в рецептах. |
|
Recipe Execution | ||
| • Один интерпретатор команд | Один интерпретатор команд для всех строк в рецепте. | |
| • Выбор интерпретатора команд | Как make выбирает интерпретатор команд, используемый для выполнения рецептов. |
|
Parallel Execution | ||
| • Отключение параллельного выполнения | Отключение параллельного выполнения | |
| • Параллельный вывод | Обработка вывода во время параллельного выполнения | |
| • Параллельный ввод | Обработка ввода во время параллельного выполнения | |
Recursive Use of | ||
| • Переменная MAKE | Специальные эффекты использования ‘$(MAKE)’. | |
| • Переменные/Рекурсия | Как передавать переменные подзадаче make. |
|
| • Параметры/Рекурсия | Как передавать параметры подзадаче make. |
|
| • -w Параметр | Как параметр ‘-w’ или ‘--print-directory’ помогает отладить использование рекурсивных make команд. |
|
How to Use Variables | ||
| • Ссылка | Как использовать значение переменной. | |
| • Типы | Переменные бывают двух типов. | |
| • Расширенные | Расширенные возможности для ссылки на переменную. | |
| • Значения | Все способы, которыми переменные получают свои значения. | |
| • Установка | Как установить переменную в make-файле. | |
| • Добавление | Как добавить текст к старому значению переменной. | |
| • Директива переопределения | Как установить переменную в make-файле, даже если пользователь установил её с аргументом команды. | |
| • Многострочные | Альтернативный способ установки переменной на многострочную строку. | |
| • Директива удаления | Как удалить переменную, чтобы она выглядела так, как будто её никогда не устанавливали. | |
| • Окружение | Значения переменных могут поступать из среды. | |
| • Указанные для цели | Значения переменных могут быть определены для каждой цели. | |
| • Указанные для шаблона | Значения переменных, указанные для определённой цели, могут применяться к группе целей, соответствующих шаблону. | |
| • Запрещение наследования | Запретить наследование переменных. | |
| • Специальные переменные | Переменные со специальным значением или поведением. | |
The Two Flavors of Variables | ||
| • Рекурсивное присваивание | Установка рекурсивно расширенных переменных. | |
| • Простое присваивание | Установка просто расширенных переменных. | |
| • Немедленное присваивание | Установка немедленно расширенных переменных. | |
| • Условное присваивание | Условное присваивание значений переменных. | |
Advanced Features for Reference to Variables | ||
| • Ссылки замещения | Ссылка на переменную с заменами значения. | |
| • Вычисленные имена | Вычисление имени переменной для ссылки. | |
Conditional Parts of Makefiles | ||
| • Пример условного | Пример условного | |
| • Синтаксис условных выражений | Синтаксис условных выражений. | |
| • Проверка флагов | Условные выражения, проверяющие флаги. | |
Functions for Transforming Text | ||
| • Синтаксис функций | Как написать вызов функции. | |
| • Функции для работы с текстом | Функции общего назначения для обработки текста. | |
| • Функции для работы с именами файлов | Функции для работы с именами файлов. | |
| • Условные функции | Функции, реализующие условия. | |
| • Функция let | Локальные переменные. | |
| • Функция foreach | Повторение текста с контролируемым изменением. | |
| • Функция файла | Запись текста в файл. | |
| • Вызов функции | Расширить пользовательскую функцию. | |
| • Функция значения | Возвратить нерасширенное значение переменной. | |
| • Функция оценки | Оценить аргументы как синтаксис makefile. | |
| • Функция происхождения | Найти, откуда переменная получила своё значение. | |
| • Функция типа | Определить тип переменной. | |
| • Функции управления make | Функции, которые контролируют, как работает make. | |
| • Функция оболочки | Заменить вывод команды оболочки. | |
| • Функция Guile | Использовать встроенный язык сценариев GNU Guile. | |
How to Run | ||
|---|---|---|
| • Аргументы Makefile | Как указать, какой Makefile использовать. | |
| • Цели | Как использовать аргументы целей для указания, какие части Makefile использовать. | |
| • Вместо выполнения | Как использовать флаги режима для указания, какой вид действий выполнить с рецептами в Makefile, кроме простого их выполнения. | |
| • Избегание компиляции | Как избежать повторной компиляции определённых файлов. | |
| • Переопределение | Как переопределить переменную для указания альтернативного компилятора и других вещей. | |
| • Тестирование | Как обойти некоторые ошибки для тестирования компиляции. | |
| • Временные файлы | Где make хранит свои временные файлы. |
|
| • Резюме опций | Резюме опций | |
Using Implicit Rules | ||
| • Использование неявных | Как использовать существующее неявное правило, чтобы получить рецепты для обновления файла. | |
| • Каталог правил | Список встроенных правил. | |
| • Неявные переменные | Как изменить поведение предопределённых правил. | |
| • Цепные правила | Как использовать цепочку неявных правил. | |
| • Правила шаблонов | Как определить новые неявные правила. | |
| • Последний шанс | Как определить рецепт для правил, которые не могут найти ничего. | |
| • Правила суффиксов | Старомодный стиль неявных правил. | |
| • Поиск неявных правил | Точный алгоритм применения неявных правил. | |
Defining and Redefining Pattern Rules | ||
| • Введение в правила шаблонов | Введение в правила шаблонов. | |
| • Примеры правил шаблонов | Примеры правил шаблонов. | |
| • Автоматические переменные | Как использовать автоматические переменные в рецепте неявных правил. | |
| • Сопоставление шаблонов | Как шаблоны сопоставляются. | |
| • Правила сопоставления всего | Меры предосторожности, которые следует принять перед определением правил, которые могут сопоставляться с любым целевым файлом. | |
| • Отмена правил | Как переопределить или отменить встроенные правила. | |
Using | ||
| • Члены архива | Члены архива как цели. | |
| • Обновление архива | Неявное правило для целевых членов архива. | |
| • Недостатки использования архивов | Опасности, на которые следует обратить внимание при работе с архивами. | |
| • Правила суффиксов архивов | Вы можете написать специальный вид правила суффикса для обновления архивов. | |
Implicit Rule for Archive Member Targets | ||
| • Символы архива | Как обновить каталоги символов архива. | |
Extending GNU | ||
| • Интеграция Guile | Использование Guile как встроенного языка сценариев. | |
| • Загрузка объектов | Загрузка динамических объектов как расширений. | |
GNU Guile Integration | ||
| • Типы Guile | Преобразование типов Guile в make строки. |
|
| • Интерфейс Guile | Вызов make функций из Guile. |
|
| • Пример Guile | Пример использования Guile в make. |
|
Loading Dynamic Objects | ||
| • Директива загрузки | Загрузка динамических объектов как расширений. | |
| • Пересоздание загруженных объектов | Как загруженные объекты пересоздаются. | |
| • API загруженных объектов | Программный интерфейс для загруженных объектов. | |
| • Пример загруженного объекта | Пример загруженного объекта | |
Integrating GNU | ||
| • Слот задач | Поделиться слотами задач с GNU make. |
|
| • Вывод на терминал | Управление выводом на терминалы. | |
Sharing Job Slots with GNU | ||
| • POSIX сервер задач | Использование сервера задач на POSIX системах. | |
| • Сервер задач Windows | Использование сервера задач на Windows системах. | |
Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/make/manual/html_node/index.html