Директива override
Переменные в
GNU Make могут создаваться и получать свое значение разными способами:
- Задаваться внутри make-файла
- "Автоматически" создаваться программой make из переменных среды
- Задаваться через командную строку при вызове программы make
Последний случай считается "специальным". Если переменная задана через командную строку, то внутри make-файла нельзя изменить ее значение "обычным" способом. Рассмотрим простой make-файл:
compile_flags := -pipe $(compile_flags)
all: echo $(compile_flags)
Предположим, что переменная compile_flags была задана через командную строку при запуске программы
make:
make compile_flags="-O0 -g"
В результате обработки make-файла на экран будет выведена строка:
-O0 -g
То есть попытка изменить значение переменной compile_flags внутри make-файла была проигнорирована. Если все-таки возникает необходимость в изменении переменной, которая была задана с помощью командной строки, нужно использовать директиву
override. Директива помещается перед именем переменной, которая должна быть изменена:
override compile_flags := -pipe $(compile_flags)
all: echo $(compile_flags)
Теперь в результате обработки make-файла на экран будет выдана строка:
-pipe -O0 -g
Содержание раздела