Эффективное использование GNU Make

         

Директива 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


Содержание раздела