继续makefile变量的学习
7.1多行变量
使用define关键字设置变量的值可以有换行,有利于定义一系列的命令,例如前面的“命令包”,define 指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以 endef 关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键开头,所以如果你用 define 定义的命令变量中没有以[Tab]键开头,那么 make 就不会把其认为是命令。
下面的这个示例展示了 define 的用法:
define two-lines
echo foo
echo $(bar)
endef
foo += "lujw"
bar += "this is a test"
.PHONY:print
print:
@$(two-lines)
可以自己尝试运行下看能输出什么结果。
7.2环境变量
并不推荐把许多的变量都定义在系统环境中,这样,在我们执行不用的 Makefile 时,拥有的是同一套系统变量,这可能会带来更多的麻烦。这里只讲解下环境变量的作用。
make 运行时的系统环境变量可以在 make 开始运行时被载入到 Makefile 文件中,但是如果 Makefile 中已定义了这个变量,或是这个变量由 make 命令行带入,那么系统的环境变量的值将被覆盖。(如果 make 指定了“-e”参数,那么,系统环境变量将覆盖 Makefile 中定义的变量),可以与之前的override指示符配合使用达到某种特定的情况需求
因此&