Возможность использования переменных внутри make-файла - очень удобное и часто используемое свойство make. В традиционных версиях утилиты, переменные ведут себя подобно макросам языка Си. Для задания значения переменной используется оператор присваивания. Например, выражение:
obj_list = main.o Editor.o TextLine.o
присваивает переменной obj_list значение "main.o Editor.o TextLine.o" (без кавычек). Пробелы между символом '=' и началом первого слова игнорируются. Следующие за последним словом пробелы также игнорируются. Значение переменной можно использовать с помощью конструкции:
$(имя_переменной)
Например, при обработке такого make-файла:
dir_list = . .. src/include
all:
echo $(dir_list)
на экран будет выведена строка:
. .. src/include
Переменные могут не только содержать текстовые строки, но и "ссылаться" на другие переменные. Например, в результате обработки make-файла:
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-файла для сборки другой программы сведется к изменению нескольких начальных строк.