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

UptoLike

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

50
Editor.cpp
Editor.h
TextLine /
TextLine.cpp
TextLine.h
makefile
Вот как выглядит makefile для этого примера:
source_dirs := Editor TextLine
search_wildcard s := $(addsuffix /*.cpp,$(source_dirs))
iEdit: $(notdir $(patsubst %.cpp,%.o,$(wildcard $(search_wildcard s))))
gcc $^ -o $@
VPATH := $(source_dirs)
%.o: %.cpp
gcc -c -MD $(addprefix -I ,$(source_dirs)) $<
include $(wildcard *.d)
По сравнению с предыдущим вариантом make-файла он претерпел
следующие изменения:
для хранения списка директорий с исходными текстами, кото-
рый нужно будет указывать в нескольких местах, заведена отдельная
переменная source_dirs;
шаблон поиска для функции wildcard (переменная
search_wildcard s) строится «динамически», исходя из списка директо-
рий source_dirs;
переменная VPATH используется для поиска файлов с исход-
ными текстами;
компилятору разрешается искать заголовочные файлы во всех
директориях с исходными текстами; для этого используется функция
addprefix, добавляющая префикс-флаг «I» к строке компилятора gcc;
при формировании списка объектных файлов из имен исходных
файлов «убирается» имя каталога, где они расположены (с помощью
функции notdir);
при формировании списка исходных файлов с расширением
«cpp» была использована функция addsuffix, добавляющая суффикс
«/*.cpp» к названиям каталогов с исходными файлами, указанными в
переменной source_dirs.