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

UptoLike

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

51
Сборка программы с разными параметрами компиляции
Часто возникает необходимость в получении нескольких вариантов
программы, скомпилированных с использованием различным парамет-
ров. Типичным примером использования двух различных вариантов яв-
ляется использование отладочной и рабочей версии программы. В таких
случаях следует использовать подход, при котором
1) все варианты программы собираются с помощью одного и того
же make-файла;
2) необходимые настройки компилятора осуществляются в make-
файле с использованием параметров, передаваемых программе make в
командной строке (например, флаги компиляции)
make compile_flags="-O3 -funroll-loops -fomit-frame-pointer"
Таким образом, наиболее простым способом задания параметров
компиляции будет внесение дополнительной переменной compile_flags
в makefile. Если параметров компиляции несколько (строка с парамет-
рами содержит пробелы), то строка со значением переменной com-
pile_flags должна быть заключена в кавычки. Командный файл makefile
с использованием параметров может выглядеть следующим образом:
override compile_flags := –pipe
source_dirs := Editor TextLine
search_wildcard s := $(addsuffix /*.cpp,$(source_dirs))
iEdit: $(notdir $(patsubst %.cpp,%.o,$(wildcard $(search_wildcard s))))
gcc $^ $(compile_flags) -o $@
VPATH := $(source_dirs)
%.o: %.cpp
gcc -c -MD $(addprefix -I ,$(source_dirs)) $(compile_flags) $<
include $(wildcard *.d)
Переменная compile_flags получает свое значение из командной
строки, если оно задано, в противном случае используется значение по
умолчанию, т. е. «pipe». Для ускорения работы компилятора к парамет-
рам компиляции добавляется флажок pipe. Следует обратить внимание
на необходимость использования в примере директивы override, ис-
пользованной для изменения переменной compile_flags внутри make-
файла. В противном случае переданные флаги компиляции из команд-
ной строки не будут размещены в переменной compile_flags.