Эффективное использование 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



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