最近学习Makefile,复习一下以前学过的知识,参考<跟我一起学Makefile>中第七部分:使用变量
参考博客:https://www.cnblogs.com/oracleloyal/p/6092526.html
1.Makefile中=,:=,?=的含义
"="
make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值
在“=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值
":="
前面的变量不能使用后面的变量,只能使用前面已定义好了的变量
"?="
FOO ?= bar
其含义是,如果 FOO 没有被定义过,那么变量 FOO 的值就是“bar”,如果 FOO 先前被定义
过,那么这条语将什么也不做,其等价于:
ifeq ($(origin FOO), undefined)
FOO = bar
endif
2.小实验
root@ubuntu:/lianxi/lianxi_c++/duotai# make test
###test code start!
###foo = HUH?
root