当前位置: 技术问答>linux和unix
请问makefile中:=的意思
来源: 互联网 发布时间:2016-04-14
本文导语: 最近才开始学linux下的编程 最近看到一个Makefile Makefile: CC=gcc INCLUDEDIR = /usr/src/Linux/include/ MODCFLAGS := -Wall -O -DMODULE -D__KERNEL__ -DLINUX -I$(INCLUDEDIR) map_driver.o : map_driver.c $(CC) $(MODCFLAGS) -c map_driver.c 请问这个":="是...
最近才开始学linux下的编程
最近看到一个Makefile
Makefile:
CC=gcc
INCLUDEDIR = /usr/src/Linux/include/
MODCFLAGS := -Wall -O -DMODULE -D__KERNEL__ -DLINUX -I$(INCLUDEDIR)
map_driver.o : map_driver.c
$(CC) $(MODCFLAGS) -c map_driver.c
请问这个":="是什么意思啊?
最近看到一个Makefile
Makefile:
CC=gcc
INCLUDEDIR = /usr/src/Linux/include/
MODCFLAGS := -Wall -O -DMODULE -D__KERNEL__ -DLINUX -I$(INCLUDEDIR)
map_driver.o : map_driver.c
$(CC) $(MODCFLAGS) -c map_driver.c
请问这个":="是什么意思啊?
|
http://www.china-askpro.com/msg22/qa83.shtml
摘录:
-------------------------------------------
有几个地方值得解释一下的。首先,我在定义大部分变量的时候使 用的是 := 而不是 = 符号。它的作用是立即把定义中参考到的函 数和变量都展开了。如果使用 = 的话,函数和变量参考会留在那 儿,就是说改变一个变量的值会导致其它变量的值也被改变。例 如:
A = foo
B = $(A)
# 现在 B 是 $(A) ,而 $(A) 是 'foo' 。
A = bar
# 现在 B 仍然是 $(A) ,但它的值已随着变成 'bar' 了。
B := $(A)
# 现在 B 的值是 'bar' 。
A = foo
# B 的值仍然是 'bar' 。
-------------------------------------------
http://www.gnu.org/software/make/manual/make.html#Flavors
6.2 The Two Flavors of Variables
摘录:
-------------------------------------------
有几个地方值得解释一下的。首先,我在定义大部分变量的时候使 用的是 := 而不是 = 符号。它的作用是立即把定义中参考到的函 数和变量都展开了。如果使用 = 的话,函数和变量参考会留在那 儿,就是说改变一个变量的值会导致其它变量的值也被改变。例 如:
A = foo
B = $(A)
# 现在 B 是 $(A) ,而 $(A) 是 'foo' 。
A = bar
# 现在 B 仍然是 $(A) ,但它的值已随着变成 'bar' 了。
B := $(A)
# 现在 B 的值是 'bar' 。
A = foo
# B 的值仍然是 'bar' 。
-------------------------------------------
http://www.gnu.org/software/make/manual/make.html#Flavors
6.2 The Two Flavors of Variables
|
搜索《跟我一起写Makefile》
|
避免循环引用?