(GNU) make использует несколько variables, например:
-
CC
- компилятор C по умолчаниюCC
-
CFLAGS
- флаги для компилятора C, по умолчанию пустые
Я хотел бы указать свои собственные значения по умолчанию для некоторых из них в моем Makefile
. В приведенном ниже примере я использовал оператор условного присваивания ?=
, чтобы переопределить мои значения по умолчанию при запуске make
:
CFLAGS ?= CFLAGS_my_default
CC ?= CC_my_default
print:
echo CC=$(CC) CFLAGS=$(CFLAGS)
К сожалению, это не меняет значение переменной CC
, поскольку исходное значение по умолчанию остается там. CFLAGS
устанавливаются моим назначением, поскольку переменная изначально была пустой:
$ make print
echo CC=cc CFLAGS=CFLAGS_my_default
CC=cc CFLAGS=CFLAGS_my_default
Переключение из переменных среды работает как ожидалось:
$ CC=CC_from_env CFLAGS=CFLAGS_from_env make print
echo CC=CC_from_env CFLAGS=CFLAGS_from_env
CC=CC_from_env CFLAGS=CFLAGS_from_env
Как изменить значения переменных по умолчанию и по-прежнему их переопределять при вызове make
?