Отбрасывает все, кроме того, что разработчик включил бы в случае упаковки исходного кода с помощью команды make dist
. Действие может быть аналогичным команде make clean
, ноmake all
(такой как последовательность, сгенерированная утилитой
Отбрасывает все, что может быть заново собрано с помощью данного make-файла. Действие может быть таким же, как make distclean
, но
Инсталляция исполняемых файлов проекта и документации в системные каталоги таким образом, чтобы они были доступны пользователям (обычно данная операция требует полномочий администратора). Инициализация или обновление баз данных или библиотек, которые необходимы исполняемым файлам для работы.
Удаление файлов, установленных в системные каталоги командой make install
(обычно данная операция требует полномочий администратора). Эта операция должна быть полностью противоположной make install
. Это правило означает подчинение соглашениям, которые ищут опытные пользователи Unix, так как для них они являются подтверждением продуманной конструкции. Напротив, его отсутствие является в лучшем случае небрежностью и (например, когда в ходе инсталляции создаются большие файлы базы данных) может рассматриваться как некомпетентность и невнимательность.
Работающие примеры всех стандартных целей доступны для изучения в make-файле программы
Однако для разработчика нет необходимости ограничивать себя данными правилами. Однажды научившись использовать
15.4.4. Генерация make-файлов
Одним из неочевидных преимуществ Unix
В середине 1980-х годов в дистрибутивах крупных Unix-программ были достаточно распространены сложные специальные shell-сценарии, которые исследовали окружение и использовали собранную информацию для создания нестандартных make-файлов. Такие специальные конфигураторы достигали абсурдных размеров. Автор данной книги однажды написал такой конфигуратор, состоящий из 3000 строк shell-кода, почти вдвое больше любого отдельного модуля программы, для которой он был предназначен, и это не было необычным.
Однажды было решено положить этому конец, и многие представители сообщества настроились на написание инструментов, которые автоматизировали бы часть или весь процесс сопровождения make-файлов. Данные инструментальные средства обычно были призваны разрешить две проблемы.
Одной из проблем была
Другой проблемой является#include
). Многие генераторы make-файлов выполняют данные действия для автоматического создания make-зависимостей.