发布
社区首页 >问答首页 >如何在makefile中的每个循环中使用其他make变量中的foreach变量?

如何在makefile中的每个循环中使用其他make变量中的foreach变量?
EN

Stack Overflow用户
提问于 2020-04-08 19:39:41
回答 1查看 25关注 0票数 0

假设我在makefile中有一个由foreach循环组成的目标

代码语言:javascript
代码运行次数:0
复制
# variables
CONFIG = 1 2 3
LOG_DIR=CONFIG_$(VAR)

# targets

run:
    running application

run_configs:
    $(foreach VAR, $(CONFIG), make run CONFIGRATION=$(VAR) logging ; )

build_dir:
    mkdir $(LOG_DIR)/

logging: build_dir
    cp logdata/* $(LOG_DIR)/.

在运行foreach目标时

代码语言:javascript
代码运行次数:0
复制
make run_configs

running application with CONFIG=1
making logdata
cp logdata/* CONFIG_/.

预期的目录为CONFIG_1,但生成的目录为CONFIG_

我知道makefile是首先解析的,所以变量LOG_DIR的计算结果为CONFIG_,因为此时foreach变量VAR为空。

我找不到一种方法来在每次执行foreach循环时更新LOG_DIR变量。

有没有办法做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 20:52:47

嗯……?当您调用递归make时,您正在设置变量CONFIGRATION

代码语言:javascript
代码运行次数:0
复制
make run CONFIGRATION=$(VAR)

但在构造变量时,您使用的是$(VAR)

代码语言:javascript
代码运行次数:0
复制
LOG_DIR=CONFIG_$(VAR)

CONFIGRATIONVAR不同。您需要将VAR传递给子pass:

代码语言:javascript
代码运行次数:0
复制
make run VAR=$(VAR)

或者在构建变量时使用CONFIGRATION

代码语言:javascript
代码运行次数:0
复制
LOG_DIR=CONFIG_$(CONFIGRATION)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61099790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档