6

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

COMPILER ?= $(GCC_PATH)g++

EXECUTABLE = run

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

非常感谢。

4

2 回答 2

10

Quoth精美的文档

如果您希望仅在尚未设置变量时才将其设置为值,则可以使用速记运算符“?=”而不是“=”。

于 2012-05-15T12:03:29.827 回答
0

?=用于条件赋值,即如果它尚未定义,则只赋值,否则离开它。在您的示例中,如果您给出make COMPILER=arm-none-gccthenarm-none-gcc被用作编译器而不是默认的 g++,如果您只是键入,make则 g++ 被用作编译器的选项。如果=使用,那么 COMPILER 将在遇到分配的时间和地点被分配值。有关 make 文件的更多信息,您可以参考 为初学者理解 makefile

于 2013-01-07T11:08:32.350 回答