Вы здесь

Инструментарий программиста в Linux: MAKE

make

Утилита автоматически определяет, какие части большой программы должны быть перекомпилированы и команды для их перекомпиляции. Наиболее часто make используется для компиляции C-программ и содержит особенности, ориентированные именно на такие задачи, но можно использовать make с любым языком программирования. Более того, применение утилиты make не ограничивается программами. Можно использовать еe для описания любой задачи, где некоторые файлы должны автоматически порождаться из других всегда, когда те изменяются.

make-file

Прежде чем использовать make, необходимо создать файл, называемый make-файлом, который описывает отношения между файлами Вашей программы и содержит команды для обновления каждого файла. Обычно исполняемый файл зависит от объектных файлов, которые, в свою очередь, зависят от исходных файлов и файлов заголовков. Для имени make-файла рекомендуется название  GNUmakefile, makefile или Makefile, причем поиск идет именно в указанном порядке. Если необходимо использовать нестандартное имя, то его можно передать явно через опцию -f.
Когда make-файл уже написан, достаточно выполнить в каталоге, где он находится, команду make. Простой make-файл состоит из правил (инструкций) следующего вида:

ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ ... ЦЕЛЬ ... : ЗАВИСИМОСТЬ ...            КОМАНДА 1
           КОМАНДА 2 ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ ... ЦЕЛЬ ... : ЗАВИСИМОСТЬ ...            КОМАНДА 1            КОМАНДА 2
и т.д.

ЦЕЛЬ обычно представляет собой имя файла, генерируемого программой make. Примерами целей являются исполняемые или объектные файлы. Цель может также быть именем выполняемого действия, как, например, clean.
ЗАВИСИМОСТЬ - это файл, изменение которого служит признаком необходимости цели. Часто цель зависит от нескольких файлов. КОМАНДА - это действие, которое выполняет make. Правило может иметь более чем одну команду - каждую на своей собственной строке. Важное замечание: необходимо начинать каждую строку, содержащую команды, с символа табуляции. Длинные строки разбиваются на несколько с использованием обратного слэша, за которым следует перевод строки. Знак диез # является началом комментария. Строка с # до конца игнорируется. Комментарии могут переноситься на несколько строк с помощью обратного слэша в конце строки.

Запуск make

Синтаксис:

make [Опции] [Переменная='abc'] [Цель]

Квадратные скобки означают необязательность присутствия данной части.
Цель - имя цели, которую надо выполнить.
Переменная ='abc' -переопределение переменных. Значения переменных, введенных в командной строке, имеют больший приоритет, чем определения в make-файле.
Опции:
-f file - явное задание имени make-файла, если задание опущено, то ищутся файлы GNUmakefile, makefile или Makefile.
-n - имитация действий без реального выполнения, служит для отладки.
-t - изменение времени модификации цели без реального выполнения.
-q - проверка на необходимость обновления цели без реального выполнения.