Программа
Предположим, например, что часть кода фактически генерируется из файла спецификации с помощью одной из методик, описанных в главе 9. В данном случае программу
Весьма распространенной является практика использования правил make-файлов в целях выражения инструкций для создания документации, так же как и кода. Часто такой подход используется для автоматического создания PostScript или другой производной документации из главных документов, написанных на каком-либо языке разметки (например, HTML или одном из языков создания документов в Unix, которые рассматриваются в главе 18). Фактически такое использование настолько широко распространено, что его стоит проиллюстрировать учебным примером.
15.4.2.1. Учебный пример: использование
В make-файле программыfetchmail-FAQ.html
, fetchmail-features.html
и design-notes.html
.
HTML-файлы предназначены для просмотра на Web-странице программы fetchmail, но если Web- браузер не используется, то HTML-разметка делает эти файлы неудобными для просмотра. Поэтому FAQ
, FEATURES
и NOTES
представляют собой простые текстовые файлы, предназначенные для быстрого просмотра с помощью редактора или программы- пейджера при чтении собственно исходного кода
Простые текстовые формы могут быть получены из главных HTML-файлов с помощью распространенной программы
Правила make позволяют разработчику редактировать главные HTML-документы, не заботясь впоследствии о повторной ручной сборке простых текстовых форм, поскольку файлы FAQ
, FEATURES
и NOTES
будут соответствующим образом при необходимости каждый раз создаваться заново.
15.4.3. Правила make
Некоторые из наиболее интенсивно используемых правил в типичных make-файлах вообще не выражают зависимостей. Они позволяют связать небольшие процедуры, которые разработчик хочет механизировать, например, создание дистрибутивного пакета или удаление всех объектных файлов для компиляции проекта с нуля.
Нефайловые правила были созданы -умышленно и существовали с первого дня. Правила 'make all' и 'clean' были моими собственными ранними соглашениями.
Существует хорошо развитый набор соглашений о том, какие правила должны присутствовать и как они должны быть названы. Придерживаясь данных соглашений, разработчик создает более понятные и простые в использовании make-файлы.
Правилоmake
без аргументов.
Запуск автоматизированного тестового пакета для программы, обычно состоящего из набора блочных тестов (unit tests)[132] для поиска регрессий, ошибок или других отклонений от ожидаемого поведения во время процесса разработки. Правило 'test' также могут использовать конечные пользователи программы, для того чтобы убедиться, что их инсталляция функционирует корректно.
Удаление всех файлов (таких как бинарные исполняемые и объектные файлы), которые обычно создаются во время выполнения команды make all
. Команда make clean
должна вернуть процесс сборки программного обеспечения в исходное состояние.
Создание архива исходного кода (обычно с помощью программыall
таким образом, чтобы правило make dist
автоматически заново собирало целый проект, прежде чем создать его дистрибутивный архив. Это хороший способ избежать ошибок, в результате которых в дистрибутив не включаются действительно необходимые производные файлы (например, простой текстовый файл README
в
Отбрасывает все, кроме того, что разработчик включил бы в случае упаковки исходного кода с помощью команды make dist
. Действие может быть аналогичным команде make clean
, ноmake all
(такой как последовательность, сгенерированная утилитой
Отбрасывает все, что может быть заново собрано с помощью данного make-файла. Действие может быть таким же, как make distclean
, но