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

UptoLike

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

44
optimize_flags := -O3
compile_flags := $(optimize_flags) -pipe
all:
echo $(compile_flags)
на экран будет выведено
-O3 -pipe
Во многих случаях использование переменных позволяет упро-
стить make-файл и повысить его наглядность. Для того чтобы облегчить
модификацию make-файла, можно разместить «ключевые» имена и спи-
ски в отдельных переменных и поместить их в начало make-файла:
program_name := iEdit
obj_list := main.o Editor.o TextLine.o
$(program_name): $(obj_list)
gcc $(obj_list) -o $(program_name)
...
Адаптация такого make-файла для сборки другой программы све-
дется к изменению нескольких начальных строк.
Использование автоматических переменных
Автоматические переменные это переменные со специальными
именами, которые «автоматически» принимают определенные значения
перед выполнением описанных в правиле команд. Автоматические пе-
ременные можно использовать для «упрощения» записи правил. Такое,
например, правило
iEdit: main.o Editor.o TextLine.o
gcc main.o Editor.o TextLine.o -o iEdit
с использованием автоматических переменных можно записать сле-
дующим образом:
iEdit: main.o Editor.o TextLine.o
gcc $^ -o $@
Здесь $^ и $@ являются автоматическими переменными. Перемен-
ная $^ означает «список зависимостей». В данном случае при вызове
компилятора gcc она будет ссылаться на строку «main.o Editor.o
TextLine.o». Переменная $@ означает «имя цели» и будет в этом приме-
ре ссылаться на имя «iEdit». Если бы в примере была использована сле-
дующая автоматическая переменная $<, то она указывала бы на первое
имя зависимости, т. е. в данном случае на файл main.o.