У меня есть makefile от Intel, в котором есть «? =». КакMakefile: синтаксис? =
COMPILER ?= $(GCC_PATH)g++
Но
EXECUTABLE = run
В чем разница между ними? = И = и когда я должен использовать первый вместо второго?
спасибо.
У меня есть makefile от Intel, в котором есть «? =». КакMakefile: синтаксис? =
COMPILER ?= $(GCC_PATH)g++
Но
EXECUTABLE = run
В чем разница между ними? = И = и когда я должен использовать первый вместо второго?
спасибо.
Quoth the fine documentation:
Если вы хотите переменный быть установлены значением, только если он еще не установлен, то вы можете использовать сокращенный оператор вместо «=» «=?».
?=
предназначено для условного присвоения, то есть если оно еще не определено, то только присвойте ему значение else. В вашем примере, если вы даете make COMPILER=arm-none-gcc
, тогда arm-none-gcc
используется как компилятор, чем g ++ по умолчанию, если вы просто набираете make
, тогда g ++ используется как опция для COMPILER. Если используется =
, тогда COMPILER будет присвоено значение, когда и где встречаются назначения. для получения дополнительной информации о файлах можно обратиться к Understanding makefile for beginners