Операционная система UNIX. Руководство программиста

     

Суффиксы и правила трансформации


Утилита make использует таблицу встроенных правил, определяющих, как преобразовать файл с одним суффиксом в файл с другим суффиксом. Если в командной строке make'а указан флаг -r, встроенная таблица не используется.

В действительности список суффиксов совпадает со списком зависимостей для имени .SUFFIXES. make пытается найти файл с одним из суффиксов из списка. Если такой файл найден, make трансформирует его в файл с другим суффиксом. Имена правил трансформации - это просто конкатенации суффиксов файлов до и после трансформации. Так, правило трансформации .c-файла в .o-файл называется .c.o. Если данное правило существует, а в пользовательских файлах описаний не задано явной последовательности команд, используется последовательность команд, соответствующая правилу .c.o. Если команда порождается при помощи одного из таких правил, посредством макроса $* можно получить основу (все, кроме суффикса) имени файла; макрос $< обозначает полное имя файла из строки зависимостей, вызвавшего выполнение действия.

Порядок суффиксов в списке существенен, поскольку список просматривается слева направо. Используется первое сформированное имя - то, для которого имеется и файл, и соответствующее ему правило. Если надо добавить новые имена, пользователь может добавить запись в правило .SUFFIXES в файле описаний. Зависимости добавляются к стандартному списку. Строка .SUFFIXES, не содержащая зависимостей, делает текущий список пустым. Если порядок имен надо изменить, текущий список должен быть очищен.



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