makefile 赋值符号学习
时间: 2023-08-20 10:09:03 浏览: 112
在 Makefile 中,赋值操作使用的符号是 `=`。通过使用 `=`,可以将一个值赋给一个变量。以下是一个例子:
```
NAME = John
```
在上面的例子中,将名字 "John" 赋给了变量 `NAME`。
另外,Makefile 中还有其他的赋值操作符号可以使用,例如 `:=`、`?= `等。这些符号的作用稍有不同,可以根据具体需求选择使用。例如:
- 使用 `:=` 进行赋值时,会进行延迟展开(lazy evaluation),即在使用变量时才会进行展开。例如:
```
NAME := $(shell echo "John")
```
- 使用 `?=` 进行赋值时,只有当变量未定义时才会进行赋值。例如:
```
NAME ?= John
```
这只是一些基本的赋值操作符号,Makefile 还有其他更多的特性和规则,可以根据具体需求进行学习和使用。
相关问题
makefile
Makefile 是一种用于自动化编译程序的工具,它可以根据代码之间的依赖关系自动决定哪些文件需要重新编译,从而提高编译效率。
而 Makefile := 是一个赋值语句,它的作用是将一个变量设置为一个值。在 Makefile 中,:= 表示变量的值是在赋值时就确定的,而不是在使用时再确定的。例如:
```
CC := gcc
```
上面的语句将变量 CC 设置为 gcc,表示编译器使用 gcc。
在 Makefile 中,:= 可以和其他赋值符号一起使用,例如:
```
CFLAGS := -Wall -g
```
上面的语句将变量 CFLAGS 设置为 -Wall -g,表示编译时需要开启警告和调试信息。
需要注意的是,:= 表示变量的值是在赋值时确定的,所以如果在 Makefile 中定义了一个变量,然后在后面修改了这个变量的值,那么修改后的值将会覆盖之前的值。例如:
```
CFLAGS := -Wall
CFLAGS := $(CFLAGS) -g
```
上面的语句将变量 CFLAGS 的值先设置为 -Wall,然后又将其修改为 -Wall -g。
总之,Makefile := 是一个常用的赋值语句,用于设置变量的值。它的作用是在编译时方便地使用变量,并且可以方便地修改变量的值。
makefile := 这个符号和 =的区别
在 Makefile 中,:= 是一种变量赋值方式,表示变量的值是在 Makefile 解析时被赋值的,而 = 是另一种变量赋值方式,表示变量的值是在 Makefile 运行时被赋值的。因此,使用 := 赋值方式定义的变量,在整个 Makefile 中都可以使用,而使用 = 赋值方式定义的变量,只能在该变量定义后的部分中使用。
举例来说,假设 Makefile 中有以下代码:
```makefile
VAR := foo
MSG = $(VAR) bar
all:
echo $(MSG)
```
在这个例子中,使用 := 赋值方式定义了变量 VAR 的值为 foo,然后使用 = 赋值方式定义了变量 MSG 的值为 $(VAR) bar。在执行 make 命令时,会输出 foo bar。
如果将 MSG 的赋值方式改为使用 :=,则输出的结果为 foo。因为使用 := 赋值方式定义的变量 VAR 的值可以在整个 Makefile 中使用,所以在 MSG 中使用 VAR 的值时,会使用 VAR 被赋值的值 foo。
阅读全文