我有一个来自 Intel 的 makefile,其中有一些“?=”。喜欢
COMPILER ?= $(GCC_PATH)g++
但
EXECUTABLE = run
?= 和 = 之间有什么区别,我什么时候必须使用第一个而不是第二个?
非常感谢。
我有一个来自 Intel 的 makefile,其中有一些“?=”。喜欢
COMPILER ?= $(GCC_PATH)g++
但
EXECUTABLE = run
?= 和 = 之间有什么区别,我什么时候必须使用第一个而不是第二个?
非常感谢。
Quoth精美的文档:
如果您希望仅在尚未设置变量时才将其设置为值,则可以使用速记运算符“?=”而不是“=”。
?=
用于条件赋值,即如果它尚未定义,则只赋值,否则离开它。在您的示例中,如果您给出make COMPILER=arm-none-gcc
thenarm-none-gcc
被用作编译器而不是默认的 g++,如果您只是键入,make
则 g++ 被用作编译器的选项。如果=
使用,那么 COMPILER 将在遇到分配的时间和地点被分配值。有关 make 文件的更多信息,您可以参考
为初学者理解 makefile