makefile中变量的赋值,我们就避免不了要选择=、:=、?=、+=这四种中的一个来对变量进行赋值!这四种有什么区别呢?我们要如何选择?下面对这四种进行简单的介绍,掌握它们的用法!
1、= 是最基本的赋值
-
VAR=hello
-
-
all:
-
echo $(VAR)
make执行:
root@tay:/home/tay/code/mk# make
echo hello
hello
2、:=
是覆盖之前的值
-
VAR=hello
-
VAR:=good
-
all:
-
echo $(VAR)
make执行:
root@tay:/home/tay/code/mk# make
echo good
good
3、?=
是如果没有被赋值过就赋予等号后面的值
-
VAR?=hello
-
-
all:
-
echo $(VAR)
make执行:
root@tay:/home/tay/code/mk# make
echo hello
hello
-
VAR=hello
-
VAR?=good
-
-
all:
-
echo $(VAR)
make执行:
root@tay:/home/tay/code/mk# make
echo hello
hello
4、+=
是添加等号后面的值
-
VAR+=hello
-
VAR+=good
-
-
all:
-
echo $(VAR)
make执行:
root@tay:/home/tay/code/mk# make
echo hello good
hello good
通过上面的小代码,我们也对
=、:=、?=、+=有一个大概的了解!其实说到这里还是很多人分不清=和:=的区别,下面主要讲解下=和:=的区别!
看下下面两个例子:
-
VAR=hello
-
VAR1=$(VAR):good
-
VAR=JAR
-
-
all:
-
echo $(VAR1)
make执行:
root@tay:/home/tay/code/mk# make
echo JAR:good
JAR:good
-
VAR=hello
-
VAR1:=$(VAR):good
-
VAR=JAR
-
-
all:
-
echo $(VAR1)
make执行:
root@tay:/home/tay/code/mk# make
echo hello:good
hello:good
通过上面的例子,我们可以知道:
1、“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。
2、“=”表示变量的值决定于整个makefile展开后的最终值,而不是它在makefile中的位置。
阅读(1708) | 评论(0) | 转发(0) |