2012-05-15 4 views
4

У меня есть makefile от Intel, в котором есть «? =». КакMakefile: синтаксис? =

COMPILER ?= $(GCC_PATH)g++ 

Но

EXECUTABLE = run 

В чем разница между ними? = И = и когда я должен использовать первый вместо второго?

спасибо.

ответ

6

Quoth the fine documentation:

Если вы хотите переменный быть установлены значением, только если он еще не установлен, то вы можете использовать сокращенный оператор вместо «=» «=?».

0

?= предназначено для условного присвоения, то есть если оно еще не определено, то только присвойте ему значение else. В вашем примере, если вы даете make COMPILER=arm-none-gcc, тогда arm-none-gcc используется как компилятор, чем g ++ по умолчанию, если вы просто набираете make, тогда g ++ используется как опция для COMPILER. Если используется =, тогда COMPILER будет присвоено значение, когда и где встречаются назначения. для получения дополнительной информации о файлах можно обратиться к Understanding makefile for beginners

Смежные вопросы