Makefile中=和:=的区别
时间: 2024-01-13 08:04:19 浏览: 110
在Makefile中,=和:=是两种不同的赋值操作符。
=是最基本的赋值操作符,用于将右边的变量值赋给左边的变量。这种赋值是“替换”式的,也就是说,当右边的变量发生改变时,左边的变量也会随之改变。
例如:
```
VAR = value
```
在这个例子中,VAR被赋值为"value"。
:=是一种更高级的赋值操作符,称为“简单展开”式赋值。它会立即展开右边的变量,并将结果赋给左边的变量。这种赋值是“赋值”式的,也就是说,左边的变量的值不会随着右边的变量的改变而改变。
例如:
```
VAR := value
```
在这个例子中,VAR被赋值为"value"。
相关问题
在makefile中+=和:=的区别
在Makefile中,`+=` 和 `:=` 是赋值操作符,它们有以下区别:
1. `+=` (append assignment):
这个操作符用于追加目标变量的值。当你使用 `target += value` 时,会把新值追加到已有的目标值上,而不是覆盖原有的内容。如果变量原本不存在,它会被创建。比如:
```makefile
foo := bar
foo += baz # 现在 foo 的值是 "barbaz"
```
2. `:=` (set if not exists assignment):
这个操作符用于设置变量值,如果该变量已经存在并且非空,则不做任何事情;如果不存在或者为空,才赋予新的值。这通常用于确保变量只被设置一次,避免多次赋值导致的混乱。例如:
```makefile
foo := bar # 假设foo已经存在且非空,不做任何事
foo := baz # 因为foo已经有了值,所以不做任何改变
```
如果变量尚未设置,`:=` 将设置其值:
```makefile
foobar ?= foobar_value # 如果 foobar 变量未定义,则赋值为 foobar_value
```
总结来说,`+=` 主要用于增加已有变量的内容,而 `:=` 则主要用于初始化变量,确保变量只被设置一次。
makefile中的 = ?= :=
在Makefile中,=是最普通的等号赋值符号,它的作用是将右侧的值赋给左侧的变量。例如,变量A=1,表示将1赋值给变量A。
?=是条件赋值符号,它的作用是只有在变量未定义时才进行赋值。例如,如果变量A未定义,A?=1,那么A的值就是1;如果A已经定义了,那么A?=1就不会起作用,A的值保持不变。
:=是简单赋值符号,它的特点是变量的值决定于它在Makefile中的位置,而不是整个Makefile展开后的最终值。这意味着,如果在使用:=进行赋值时,变量的右侧包含了其他变量的引用,那么这些变量的值将在赋值时被解析并赋给左侧的变量。
总结一下:
- =是最普通的等号赋值符号,将右侧的值赋给左侧的变量。
- ?=是条件赋值符号,只有在变量未定义时才进行赋值。
- :=是简单赋值符号,变量的值决定于它在Makefile中的位置,而不是整个Makefile展开后的最终值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Makefile 中:= ?= += =的区别](https://blog.csdn.net/chenzhen1080/article/details/107135390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [Makefile 中 = := ?= += 的使用及区别](https://blog.csdn.net/shenfengchen/article/details/110792431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文