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

UptoLike

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

214
include $(wildcard *.d)
По сравнению с предыдущим вариантом make-файла он претерпел
следующие изменения:
для хранения списка директорий с исходными текстами, кото-
рый нужно будет указывать в нескольких местах, заведена отдельная
переменная source_dirs;
шаблон поиска для функции wildcard (переменная
search_wildcard s) строится «динамически», исходя из списка директо-
рий source_dirs;
переменная VPATH используется для поиска файлов с исход-
ными текстами;
компилятору разрешается искать заголовочные файлы во всех
директориях с исходными текстами; для этого используется функция
addprefix, добавляющая префикс-флаг «I» к строке компилятора gcc;
при формировании списка объектных файлов из имен исходных
файлов «убирается» имя каталога, где они расположены (с помощью
функции notdir);
при формировании списка исходных файлов с расширением
«cpp» была использована функция addsuffix, добавляющая суффикс
«/*.cpp» к названиям каталогов с исходными файлами, указанными в пе-
ременной source_dirs.
Сборка программы с разными параметрами компиляции
Часто возникает необходимость в получении нескольких вариантов
программы, скомпилированных с использованием различным парамет-
ров. Типичным примером использования двух различных вариантов яв-
ляется использование отладочной и рабочей версии программы. В таких
случаях следует использовать подход, при котором
1) все варианты программы собираются с помощью одного и того
же make-файла;
2) необходимые настройки компилятора осуществляются в make-
файле с использованием параметров, передаваемых программе make в
командной строке (например, флаги компиляции)
make compile_flags="-O3 -funroll-loops -fomit-frame-
pointer"
Таким образом, наиболее простым способом задания параметров
компиляции будет внесение дополнительной переменной compile_flags в
makefile. Если параметров компиляции несколько (строка с параметрами