|
Make:
утилита сопровождения программ
7.1. Общие сведения.
Использование утилиты сопровождения программ MAKE
позволяет автоматизировать процесс разработки и эксплуатации
программ на ассемблере и языках высокого уровня. После того,
как были внесены изменения в исходный файл, при помощи MAKE
могут быть выполнены действия, необходимые по отображению
этих изменений в выходных файлах.
В отличие от других программ пакетной обработки, MAKE
сравнивает даты последних модификаций выходных (целевых)
файлов с датами последних модификаций исходных (требуемых)
файлов. MAKE выполняет поставленную задачу, только если
целевой файл старше. Это может сэкономить много времени,
например, при разработке программ, содержащихся во многих
исходных файлах или требующих нескольких шагов компиляции.
7.2. Запуск и особенности работы MAKE.
Перед запуском MAKE должен быть создан специальный
файл описаний MAKE, содержимое которого задает поставленную
задачу и определяет требуемые для ее выполнения файлы.
Файл описаний состоит из одного или нескольких
описаний цели/источника. Каждое описание задается в виде:
<имя исходного файла> : <имена требуемых файлов>
<команда>
...
Предполагается, что указанный исходный файл может быть
преобразован, для чего могут понадобиться файлы со
специфицированными после : именами.
- 65 -
Имена файлов при необходимости могут быть снабжены
спецификациями путей поиска в подоглавлениях.
<Команда> рассматривается как имя исполнительного
файла или команда MS-DOS.
Может быть задано любое число требуемых файлов, но
только один исходный (целевой). Имена требуемых файлов
должны разделяться хотя бы одним пробелом. Если они не
помещаются на одной строке, может быть специфицирован
признак продолжения - символ \ .
Может быть задано любое число команд DOS и/или имен
исполнительных файлов, но каждая команда или имя должны
располагаться на отдельной строке и начинаться с символа TAB
или хотя бы одного пробела. Команды или файлы выполняются
лишь в том случае, если хотя бы один из требуемых файлов был
модифицирован после создания или модификации целевого, т.е.
должно выполняться одно из двух условий:
- целевой файл старше требуемого;
- целевой файл не существует.
Может быть задано любое число описаний цели/источника.
Последняя строка предыдущего описания должна отделяться от
первой строки следующего описания хотя бы одной строкой,
содержащей все пробелы.
При появлении символа # остаток строки считается
комментарием. В области команд символ # может находиться
только в 1-й позиции строки.
Следует помнить, что порядок следования описаний
крайне важен, т.к. в процессе их отработки могут меняться
даты модификаций файлов, что оказывает влияние на дальнейшую
работу MAKE.
Запуск MAKE осуществляется введением командной строки
следуюшего вида:
MAKE [<опции>][<макроопределения>]<имя файла описаний>
Опции и макроопределения MAKE описаны в пп.7.3 и 7.4
соответственно.
Имя файла описаний MAKE обычно не имеет расширения и
совпадает с базовыми именами используемых в описаниях
файлов, но это не является обязательным.
Если MAKE обнаруживает, что очередное описание по
каким-либо причинам не может быть отработано, осуществляется
переход к следующему описанию.
Если в процессе работы выяснится, что целевой файл не
существует, MAKE продолжает работу, т.к. этот файл может
быть создан последующими командами. Если же не существует
требуемый или командный файл или возникает ошибка при
выполнении команды, MAKE прекращает свою работу, а на
консоль выдается поясняющее сообщение.
- 66 -
7.3. Опции MAKE.
Каждая опция MAKE в командной строке запуска MAKE
обозначается предшествующим символом / .
Описание опций MAKE приведено ниже:
/D - Выдавать на консоль даты последних модификаций
каждого сканируемого файла.
/I - Игнорировать коды возврата после вызываемых
программ.
/N - Выдавать на консоль команды, выполнение которых
не осуществляется.
/S - Не выдавать на консоль сообщений.
7.4. Макроопределения.
Использование макроопределений позволяет отложить
определение компонент описания работы MAKE до момента
запуска. Они могут располагаться как в файле описаний, так и
в командной строке.
Существуют две формы макроопределений:
<имя>=<значение>
или
$(<имя>)
Первая форма задает значение символичекому параметру,
который может использоваться для определения компонент
описания. Допустимо любое число пробелов между элементом
<имя> и символом = и между этим символом и элементом
<значение>, которые игнорируются. Пробелы, специфицированные
после <значение>, рассматриваются как часть значения.
Пробелы как часть значения в командной строке должны
заключаться в двойные апострофы " .
В файле описаний MAKE каждое макроопределение должно
занимать отдельную строку.
Одно и то же имя может быть определено в нескольких
местах. Подстановка значений осуществляется в соответствии
со следующим списком (в порядке убывания приоритетов):
1. Из командой строки.
2. Из файла описаний MAKE.
3. Из текущего окружения (например, ключевые слова
DOS).
- 67 -
Вторая форма макроопределений использует значение,
определенное в другом месте. Элемент <имя> приводится к
изображению на регистре заглавных букв.
Допускается вложенность макроопределений, когда
внутреннее макроопределение определяется через внешнее. При
этом следует избегать рекурсии.
Пример рекурсивной вложенности макроопределений:
A=$(B)
B=$(A)
Существуют 3 специальные макропеременные, имеющие
следующие фиксированные значения:
$* - часть имени (без расширения) целевого файла;
$@ - полное имя целевого файла;
$** - полный список требуемых файлов.
Эти макропеременные не требуют предварительного
описания и могут использоваться в файле описаний MAKE.
7.5. Правила вывода.
MAKE обеспечивает возможность задания правил вывода,
которые помогают правильно интерпретировать неполностью
определенные конструкции.
Правила вывода могут находиться в файле описаний MAKE
или в специальном файле с именем TOOLS.INI, поиск которого
осуществляется на активном драйве в подоглавлениях,
определенных командой DOS PATH. В файле TOOLS.INI правилам
вывода должна предшествовать строка, первыми символами
которой являются:
[make]
Поиск правила вывода осуществляется в следующей
последовательности:
1. В файле описаний MAKE.
2. В файле TOOLS.INI.
Правила вывода задаются в виде:
.<расширение требуемого файла>.<расширение целевого файла>:
<команда>
<команда>
...
Пример: содержимое файла описаний MAKE:
.asm.obj:
MASM $*.asm,,,;
test1.obj: test1.asm
test2.obj: test2.asm
MASM test2.asm;
Правило вывода занимает первые 2 строки. Прочитав 3-ю
- 68 -
строку, MAKE обнаруживает, что описание неполно, т.к. 4-я
строка является уже началом следующего описания. Поиск
нужного правила вывода ведется по совпадению расширений
файлов строки 3 с указанными в правиле. После отыскания
правила MAKE, обработав макропеременную $*, выполняет
командную строку:
MASM test1.asm,,;
4-я и 5-я строки преставляют собой законченное
описание, и для его интерпретации использования правил
вывода не требуется.
© KOAP
Open Portal 2000
|