ВУЗ:
Составители:
205
Предположим, что в директории с проектом находятся следующие
файлы:
main.cpp
Editor.cpp
TextLine.cpp
Предположим также, что программа make была вызвана следую-
щим образом:
make
Цель не указана в командной строке, поэтому запускается алгоритм
выбора цели (функция «ВыбратьГлавнуюЦель»). Главной целью стано-
вится файл iEdit (первая цель из первого правила). Цель iEdit передается
функции «ДостичьЦели». Эта функция выполняет поиск правила, кото-
рое описывает обрабатываемую цель. В данном случае это первое пра-
вило make-файла. Для найденного правила запускается процедура обра-
ботки (функция «ОбработатьПравило»).
Сначала поочередно обрабатываются описанные в правиле зависи-
мости (функция «ОбработатьЗависимости»). Первая зависимость – объ-
ектный файл main.o. Поскольку в make-файле есть правило с такой це-
лью (функция «ЕстьТакаяЦель» возвращает true), то для цели main.o за-
пускается процедура «ДостичьЦели».
Функция «ДостичьЦели» ищет правило, где описана цель main.o.
Эта цель описана во втором правиле make-файла. Для этого правила за-
пускается функция «ОбработатьПравило», которая запускает процесс
обработки зависимостей (функция «ОбработатьЗависимости»). Во вто-
ром правиле указана единственная зависимость – main.cpp. Такой цели в
make-файле не существует, поэтому считается, что зависимость main.cpp
является именем файла. Далее, проверяется наличие этого файла на дис-
ке (функция «ПроверитьНаличиеФайла») – такой файл существует. На
этом процесс обработки зависимостей завершается.
После обработки зависимостей функция «ОбработатьПравило»
принимает решение о том, следует ли выполнять указанные в правиле
команды (функция «НужноВыполнятьКоманды»). Цели правила (файла
main.o) не существует, поэтому команды выполнять следует. Функция
«ВыполнитьКоманды» запускает указанную в правиле команду (компи-
лятор gcc), в результате чего создается файл main.o, так называемый
объектный файл (object file).
Страницы
- « первая
- ‹ предыдущая
- …
- 203
- 204
- 205
- 206
- 207
- …
- следующая ›
- последняя »
