Четвертый Borland C++ и его окружение

       

Синтаксис явных правил


Явное правило - это правило, которое явным образом задает

полные имена файлов. Явные правила имеют следующий вид:

целевой_файл[целевой_файл]...:[{маршрут}][исходный_файл...]

[команда]

.

.

.

Здесь "целевой_файл" представляет собой файл, который должен

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

любую команду, допустимую в DOS (включая вызовы .BAT файлов и выполнение .EXE и .COM файлов).

Явные правила определяют одно или несколько имен результирующих файлов, ноль или более исходных файлов, а также необязательный перечень команд, которые должны быть выполнены. Имена результирующего (целевого) и исходного файлов, указываемые в явных правилах, могут содержать обычные спецификации дисковода и каталога,

допустимые в DOS, а также содержать трафаретные символы.

Обязательны для соблюдения следующие указанные ниже синтаксические правила:



  • "Целевой_файл" должен начинаться с самого начала строки (в

    столбце 1);

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

    расположенные после двоеточия;

  • Каждая "команда" должна начинаться со структурного отступа

    (ей должен предшествовать по меньшей мере один символ пробела или табуляции). Как было отмечено ранее, если список

    исходных файлов или заданная команда не могут уместиться

    на одной строке, то в качестве символа продолжения строки

    может использоваться обратная косая черта.

  • Наличие как имен исходных файлов, так и команд является необязательным; возможно существование явных правил, которые состоят

    только из строки целевой_файл[целевой_файл...], за которой следует символ двоеточия.

    Идея использования явного правила заключается в том, что команда или перечень команд будут осуществлять создание или обновление результирующего файла целевой_файл как правило на основе

    исходного файла "исходный_файл". Когда утилита MAKE обнаруживает




    явное правило, она сначала проверяет, не являются ли сами исходные файлы "исходный_файл" результирующим файлом "целевой_файл" в
    каком-либо другом правиле формирующего файла. Если это так, то
    сначала утилита MAKE анализирует это второе правило.
    После того, как на основе других правил были созданы или обновлены все исходные файлы "исходный_файл", утилита MAKE проверяет наличие результирующего файла "целевой_файл". Если "целевой_файл" не существует, то все команды выполняются в том порядке, в котором они заданы. Если "целевой_файл" существует, то дата
    и время его последней модификации сравниваются с датой и временем
    каждого исходного файла "исходный_файл". Если какой-либо исходный
    файл был модифицирован после того, как был модифицирован файл
    "целевой_файл", то выполняется заданный перечень команд.
    Имя файла может указываться в левой части явного правила
    файла описания утилиты MAKE лишь один раз.
    Каждая командная строка в явном правиле начинается с символа
    пробела. Утилита MAKE рассматривает все строки, которые следуют
    за явным правилом и продолжаются до очередной строки, начинающейся со столбца 1 (которой не предшествуют символы пробела) или до
    конца файла, как часть списка команд для этого правила. Пустые
    строки игнорируются.
    Явное правило, за которым не следуют командные строки, интерпретируется несколько иначе, чем явное правило с командными
    строками.
  • Если в состав явного правила входят команды, то результирующий файл зависит только от тех файлов, которые перечислены в явном правиле.

  • Если в явном правиле не заданы никакие команды, результирующий файл зависит от двух наборов файлов: тех файлов,
    которые заданы в явном правиле, и от всех файлов, которые
    подходят под определение неявного правила для результирующего файла (файлов). Это позволяет задавать зависимости,
    которые будут обрабатываться неявным правилом. Например:
    .c.obj
    BCC -c $<
    рrog.obj:

  • Файл рrog.obj зависит от файла рrog.c; если не совпадают даты этих файлов, то будет выполняться командная строка:
    BCC -c рrog.c

    Содержание раздела