MakeFile直接展开式与递归展开式
- 最近看MakeFile时,看到了这两个概念,总结一下。
直接展开式
- 定义
xxx := xxx
- 当make读到该行时,立刻展开该表达式(有点类似C++中的定义)。
TEST := $(TEST1)
TEST1 := hello
all:
@echo $(TEST)
@echo $(TEST1)
@echo Done
- 输出:对于"TEST:=$(TEST1)"展开时,由于“TEST1”未定义,所以输出为空。
hello
Done
递归展开式
- 定义
=
# 或者
define
- 表达式不会立即展开,使用在被使用时,才会进行展开(有点类似C++中的声明)。
TEST = $(TEST1)
TEST1 = hello
all:
@echo $(TEST)
@echo $(TEST1)
@echo Done
- 输出:
hello
hello
Done