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
本文深入探讨了Makefile中直接展开式与递归展开式的定义及应用差异。直接展开式在定义时即刻展开,而递归展开式则在使用时才进行展开,通过实例对比了两种方式的输出结果。
1205

被折叠的 条评论
为什么被折叠?



