makefile 循环赋值
时间: 2023-10-23 19:15:55 浏览: 97
Makefile 中可以使用循环语句来赋值,常用的循环语句有 for 和 foreach。其中,for 循环的形式为:
```makefile
$(foreach var, list, text)
```
其中,var 是变量名,list 是变量值列表,text 是要执行的命令或变量赋值语句。
具体来说,我们可以使用 for 循环来给变量赋值,例如:
```makefile
# 定义一个变量 DIRS,它的值为 a b c
DIRS := a b c
# 定义一个变量 OBJS,它的值为 a.o b.o c.o
OBJS := $(foreach dir, $(DIRS), $(dir).o)
# 输出变量 OBJS 的值
$(info OBJS: $(OBJS))
```
其中,$(dir).o 表示在变量 dir 后面添加 .o 后缀,因此 $(OBJS) 的值为 a.o b.o c.o。
除了 for 循环,还可以使用 foreach 循环,它的形式为:
```makefile
$(varname) := $(foreach var, list, text)
```
其中,varname 是变量名,list 是变量值列表,text 是要执行的命令或变量赋值语句。具体来说,我们可以使用 foreach 循环来给变量赋值,例如:
```makefile
# 定义一个变量 DIRS,它的值为 a b c
DIRS := a b c
# 定义一个变量 OBJS,它的值为 a.o b.o c.o
$(foreach dir, $(DIRS), $(eval OBJS += $(dir).o))
# 输出变量 OBJS 的值
$(info OBJS: $(OBJS))
```
其中,$(eval OBJS += $(dir).o) 表示将 $(dir).o 追加到 OBJS 变量的末尾。因此,$(OBJS) 的值为 a.o b.o c.o。
阅读全文