在阅读Makefile的时候发现一个问题,有的变量的赋值是:=有的变量是=,他们之间有什么区别呢?今天就来分析一下。
1,立即展开变量:使用“ := ”操作符赋值;
在解析阶段之间赋值常量字符串。
即在makefile构建依赖关系树的时候就将已经将变量展开赋给具体的值了。
2,延迟展开变量:使用 “ = ”操作符赋值;
运行阶段实际使用变量时再进行求值。
即在命令行输入make命令的时候,根据依赖关系树去运行的时候,才将此变量进行展开。
总结:
1,一般在目标中,目标依赖中使用立即展开变量;
2,在命令中使用延迟展开变量;