Makefile:syntax?=

时间:2012-05-15 11:58:08

标签: makefile

我有一个来自英特尔的makefile,其中有一些“?=”。 喜欢

COMPILER ?= $(GCC_PATH)g++

但是

EXECUTABLE = run

?=和=之间的区别是什么?我何时必须使用第一个而不是第二个?

非常感谢。

2 个答案:

答案 0 :(得分:6)

Quoth the fine documentation

  

如果您希望变量仅在尚未设置的情况下设置为值,则可以使用简写运算符'?='而不是'='。

答案 1 :(得分:0)

?=用于条件赋值,即如果尚未定义则只分配值,否则保留它。在您的示例中,如果您提供make COMPILER=arm-none-gcc,那么arm-none-gcc用作编译器而不是默认的g ++,如果只键入make,那么g ++将作为COMPILER的选项。如果使用=,则会在遇到分配的时间和地点为COMPILER分配值。有关make文件的更多信息,请参阅 Understanding makefile for beginners