可能是重复问题:
GNU Makefile 中 =、?=、:= 和 += 的区别是什么?
我只了解非常基本的makefile
语法,并且正在阅读另一个项目的makefile
,发现使用:=
进行宏声明。为什么他们要使用这个符号?
换句话说,以下代码是否有区别:
MYMACRO = hi i'm a macro
andMYMACRO := hi i'm a macro
?
可能是重复问题:
GNU Makefile 中 =、?=、:= 和 += 的区别是什么?
我只了解非常基本的makefile
语法,并且正在阅读另一个项目的makefile
,发现使用:=
进行宏声明。为什么他们要使用这个符号?
换句话说,以下代码是否有区别:
MYMACRO = hi i'm a macro
andMYMACRO := hi i'm a macro
?
:=
是 GNU make 中定义变量的方式,它在定义时进行展开而不是使用时。
A = $(B) world
B = hello
all:
@echo $(A)
输出:hello world
而 := 则用于立即计算。使用此符号运行上述 Makefile 只会显示 "world"。 - undefined
VAR_NAME = value
可以使用$
符号来引用变量:$(VAR_NAME)
在使用变量时,也可以进行字符串替换操作:$(VAR_NAME:old=new)
例如,将SRC_DIR
中的.c
后缀替换为.o
后缀:OBJ_FILES = $(SRC_DIR:%.c=%.o)
- cnicutar'info' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- BrainSlugs83