Операционные системы. Замятин А.В - 47 стр.

UptoLike

Составители: 

47
iEdit: $(patsubst %.cpp,%.o,$(wildcard *.cpp))
gcc $^ -o $@
%.o: %.cpp
gcc -c $<
main.o: main.h Editor.h TextLine.h
Editor.o: Editor.h TextLine.h
TextLine.o: TextLine.h
Список объектных файлов программы строится автоматически
(цель iEdit). Сначала с помощью функции wildcard получается список
всех файлов с расширением «cpp», находящихся в директории проекта.
Затем с помощью функции patsubst полученный таким образом список
исходных файлов преобразуется в список объектных файлов (расшире-
ние файлов меняется с «cpp» на «o»). Make-файл теперь стал более уни-
версальным.
Автоматическое построение зависимостей от заголовочных файлов
Автоматизировав перечисление объектных файлов, остается про-
блема перечисления зависимостей объектных файлов от заголовочных
файлов. Например:
….
main.o: main.h Editor.h TextLine.h
Editor.o: Editor.h TextLine.h
TextLine.o: TextLine.h
Перечисление зависимостей «вручную» может потребовать суще-
ственного объема работы. Не всегда достаточно просто открыть файл с
исходным текстом и перечислить имена всех заголовочных файлов,
подключаемых с помощью директивы «#include»: заголовочные файлы
могут включать в себя другие заголовочные файлы и подобная «цепочка
зависимостей» может быть достаточно длинной. Построение списка за-
висимостей можно реализовать с использованием утилиты make и ком-
пилятора gcc.
Для совместной работы с make компилятор gcc имеет несколько
опций:
Ключ компиляции M. Для каждого файла с исходным текстом
препроцессор будет выдавать на стандартный выход список зависимо-
стей в виде правила для программы make. В список зависимостей попа-
дает сам исходный файл, а также все файлы, включаемые с помощью
директив «#include <имя_файла>» и «#include "имя_файла"». После за-