Существует два способа передачи переменных для создания:
Использование аргументов командной строки:
make VAR=value
Использование среды:
export VAR=var; make
или (лучше, потому что это меняет среду только для текущей команды)
VAR=var make
Они немного отличаются. Первый сильнее. Это значит, что ты знаешь, чего хочешь. Второе можно считать намеком. Разница между ними заключается в операторах =
и +=
(без override
). Эти операторы игнорируются, когда переменная определяется в командной строке, но не игнорируются, когда переменная определяется в среде. Таким образом, я предлагаю вам иметь Makefile с:
CC ?= gcc
CFLAGS += -Wall
INTERNAL_VARS = value
и позвоните по этому номеру:
CFLAGS=-g make
Обратите внимание, если вы хотите вывести -Wall
, вы можете использовать:
make CFLAGS=
Пожалуйста, не используйте ключевое слово override
, иначе у вас не будет никакого способа изменить переменную, затронутую override
.