在Makefile中,变量是一种存储值的方式,可以在整个Makefile中重复使用
- 定义变量:
在Makefile中,使用等号(=)或者冒号等号(:=)来定义变量。等号表示懒惰求值(lazy evaluation),即只有在使用变量时才会计算其值;冒号等号表示立即求值(immediate evaluation),即在定义变量时就计算其值。
# 使用等号定义变量(懒惰求值) variable1 = value1 # 使用冒号等号定义变量(立即求值) variable2 := value2
- 使用变量:
要在Makefile中使用变量,只需在变量名前加上美元符号($)和括号(())。
# 使用变量 target: @echo $(variable1) @echo $(variable2)
- 修改变量值:
在Makefile中,可以使用等号(=)或者冒号等号(:=)来修改变量的值。注意,这里的行为与定义变量时略有不同。使用等号(=)时,如果变量已经被定义过,那么新值将覆盖旧值;使用冒号等号(:=)时,如果变量已经被定义过,那么新值将被追加到旧值之后。
# 修改变量值 variable1 = new_value1 variable2 := new_value2
- 删除变量:
要删除变量,可以使用undefine
指令。
# 删除变量 undefine variable1 undefine variable2
- 条件语句中的变量:
在Makefile的条件语句(如ifeq
、ifneq
、ifdef
和ifndef
)中,可以使用变量来进行比较。
# 条件语句中的变量 ifeq ($(variable1), value1) # 当variable1等于value1时执行的代码 endif
- 函数和变量:
Makefile中的函数可以接受变量作为参数,并返回一个新的值。
# 函数和变量 variable3 = $(subst old,new,$(variable1))
这里,$(subst old,new,$(variable1))
函数将variable1
的值中的所有"old"替换为"new",并将结果赋值给variable3
。