Внутренние правила программы make

Внутренние правила команды make хранятся в файле, аналогичном файлам описания.

Если указать флаг -r, команда make не будет использовать файл внутренних правил. В этом случае необходимо определить правила создания файлов в файле описания. Файл внутренних правил содержит список расширений имен файлов (таких как .o или .a), которые распознаются командой make, и правила, указывающие команде make способ создания файла с одним расширением из файла с другим расширением. По умолчанию команда make распознает следующие расширения имен:

Суффикс Описание
.a Архивная библиотека
.C Исходный файл на языке C++
.C\~ Файл системы управления исходным кодом (SCCS), содержащий исходный файл на языке C++
.c Исходный файл на языке C
.c~ Файл SCCS, содержащий исходный файл на языке C
.f Исходный файл на языке FORTRAN
.f~ Файл SCCS, содержащий исходный файл на языке FORTRAN
.h Заголовочный файл на языке C
.h~ Файл SCCS, содержащий заголовочный файл на языке C
.l Исходная грамматика lex
.l~ Файл SCCS, содержащий исходную грамматику lex
.o Объектный файл
.s Исходный файл на ассемблере
.s~ Файл SCCS, содержащий исходный файл на ассемблере
.sh Исходный файл команд оболочки
.sh~ Файл SCCS, содержащий исходный файл команд оболочки
.y Исходная грамматика yacc-c
.y~ Файл SCCS, содержащий исходную грамматику yacc-c

Список расширений имен файлов аналогичен списку взаимосвязей в файле описания и следует за фиктивным именем целевого файла .SUFFIXES. Команда make просматривает список расширений имен файлов слева направо, поэтому последовательность записей существенна.

Команда make будет использовать первую же запись из списка, которая удовлетворяет следующим требованиям:

  • Запись совпадает с требованиями к расширению имени входного или выходного файла для текущих целевого файла и файла зависимостей.
  • С данной записью связано правило.

Из двух расширений имен файлов, определяемых правилом, команда make создает имя правила. Например, имя правила для преобразования файла .c в файл .o - .c.o.

Для того чтобы добавить в список другие расширения имен файлов, добавьте в файл описания запись для фиктивного целевого имени .SUFFIXES. Если задать в файле описания строку .SUFFIXES без расширений имен файлов, команда make сотрет текущий список. Для изменения порядка имен в списке сотрите текущий список, а затем укажите в строке .SUFFIXES новый набор значений.