Утилита MAKE позволяет на ряду с явными правилами задавать
неявные правила. Неявные правила представляют собой обобщение явных правил; они применяются ко всем файлам, которые имеют соответствующие расширения имен файлов.
Ниже приводится пример, который иллюстрирует отношение между
двумя правилами. Рассмотрим явное правило из предыдущего примера.
Данное правило является типичным, поскольку оно следует общему
принципу: объектный файл(с расширением имени .OBJ) зависит от
файла с тем же основным именем и расширением .C и создается путем
выполнения программы BCC. Фактически, можно создать формирующий
файл для утилиты MAKE, который будет содержать несколько(или
несколько десятков) явных правил, соответствующих одному и тому
же формату.
Переписывая явное правило в виде неявного правила, вы можете
убрать все явные правила, которые подчиняются одинаковому форма ту. Неявное правило будет иметь следующий вид:
.c.obj:
BCC -c $<
Это правило означает следующее: "Любой файл с расширением .C
может быть оттранслирован в файл с тем же основным именем и расширением .OBJ с помощью следующей последовательности команд".
Создание файла .OBJ происходит с помощью второй строки этого правила, где $< означает имя файла с расширением, присущим исходному
файлу (.C). (Символ $< представляет макрокоманду особого вида.
Объяснение макрокоманд приводится далее. Макрокоманда $< при каждом выполнении команды будет заменена полным именем соответствующего исходного файла .C).
Идентификатор $< представляет собой специальную макрокоманду. Макрокоманды обсуждаются ниже. Макрокоманда $< при каждом выполнении команды будет заменяться полными именем соответствующего
исходного файла .С.
Ниже приводится синтаксис неявного правила:
[{исходный_каталог}].исх_расшир.[{целевой_каталог}]цел_расшир:
[команда]
...
Как и ранее, использование команды является необязательным.
Если команда используется, то перед ней должны стоять один или
несколько символов пробелов.