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




ОСНОВНЫЕ ВОЗМОЖНОСТИ


Основное действие утилиты make - обновление целевого файла при условии, что все файлы, от которых зависит целевой, существуют и не являются устаревшими. Целевой файл порождается заново, если названные файлы модифицированы, а целевой - нет. Утилита make исследует граф зависимостей. Функционирование make'а основывается на анализе времени последней модификации файлов.

Утилита make действует, опираясь на три источника информации:

  • Заданный пользователем файл описаний.
  • Имена файлов и времена последней модификации, получае- мые от файловой системы.
  • Встроенные правила, позволяющие разрешить некоторые не- домолвки в файле описаний.

В качестве иллюстрации рассмотрим следующий простой пример. Программа prog получается из трех исходных файлов x.c, y.c и z.c путем их компиляции и редактированием связей совместно с библиотекой math. В соответствии с принятыми соглашениями результат работы C-компилятора будет помещен в файлы с именами x.o, y.o и z.o. Предположим также, что файлы x.c и y.c используют общие описания из включаемого файла defs.h, а z.c - не использует. Пусть x.c и y.c содержат строку

#include "defs.h"

Следующая спецификация описывает взаимосвязи и операции:

prog : x.o y.o z.o cc x.o y.o z.o -lm -o prog x.o y.o : defs.h

Если эту информацию поместить в файл с именем makefile, команда

make

будет выполнять операции, необходимые для перегенерации prog

после любых изменений, сделанных в каком-либо из четырех исходных файлов x.c, y.c, z.c или defs.h. В приведенном выше примере в первой строке утверждается, что prog зависит от трех .o-файлов. Если эти файлы имеются в наличии, рассматривается вторая строка, которая описывает, как отредактировать связи между ними, чтобы создать prog. Третья строка гласит, что x.o и y.o зависят от defs.h. Обратившись к файловой системе, make обнаруживает, что имеются три .c-файла, соответствующие требуемым .o- файлам, и применяет встроенные правила порождения объектного файла из исходного C-файла (то есть выполняет команду cc -c).




Содержание  Назад  Вперед