Четвертый BORLAND С++ и его окружение



         

Синтаксис неявных правил - часть 2


"Исх_расшир" (расширение имени файла, которое должно начинаться точкой в столбце 1) представляет собой расширение имени

исходного файла; то есть, оно относится к любому файлу, который

имеет следующий формат:

имя_файла.исх_расшир

Аналогично, "цел_расшир" относится к файлу, который удовлетворяет спецификации:

имя_файла.цел_расшир

Здесь "имя_файла" является одинаковым для обоих файлов. Другими словами, данное неявное правило заменяет все явные правила,

которые соответствуют следующему формату:

имя_файла.исх_расшир:имя_файла.цел_расшир

[команда]

...

для любого имени файла.

Если утилита MAKE не может обнаружить явное правило для заданного результирующего файла, или если имя результирующего файла

появляется в явном правиле, у которого отсутствуют команды, то

она использует неявные правила.

Расширение имени интересующего утилиту MAKE файла используется для определения того неявного правила, которое должно использоваться. Это неявное правило применяется в том случае, если

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

Предположим, например, что у вас имеется формирующий файл

утилиты MAKE (с именем MAKEFILE), который имеет следующее содержимое:

c.obj:

BCC -c $<

Если у вас имеется написанная на Си программа с именем

RATIO.C, которую вы хотите скомпилировать в файл RATIO.OBJ, то вы

можете воспользоваться командой:

make ratio.obj

Утилита MAKE будет рассматривать файл RATIO.OBJ в качестве

результирующего файла. Поскольку явное правило для создания файла

RATIO.OBJ не существует, утилита MAKE применяет неявное правило и

генерирует следующую команду:

BCC -c ratio.c

которая, естественно, выполняет компиляцию для создания файла

RATIO.OBJ.

Утилита MAKE использует неявные правила и в том случае, когда ей задаются явные правила, не сопровождающиеся никакими командами. Предположим, что в начале файла описания вы задали следующее неявное правило:

.c.obj:




Содержание  Назад  Вперед