如何在 makefile 中的每个循环 运行 的其他一些 make 变量中使用 foreach 变量?
How to use foreach variable in some other make variable for every loop run in makefile?
假设我有一个目标,由 makefile 中的 foreach 循环组成
# 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 目标上
make run_configs
running application with CONFIG=1
making logdata
cp logdata/* CONFIG_/.
预期的目录是 CONFIG_1 但构建的是 CONFIG_
我知道 makefile 首先被解析,所以变量 LOG_DIR 被评估为 CONFIG_
因为此时foreach变量VAR为null。
我找不到在每次执行 foreach 循环时更新 LOG_DIR 变量的方法。
有没有办法实现这个。
嗯……?当您调用递归 make 时,您正在设置变量 CONFIGRATION
:
make run CONFIGRATION=$(VAR)
但是当你构建你使用的变量时 $(VAR)
:
LOG_DIR=CONFIG_$(VAR)
CONFIGRATION
与 VAR
不同。您需要将 VAR
传递给 submake:
make run VAR=$(VAR)
或在构建变量时使用CONFIGRATION
:
LOG_DIR=CONFIG_$(CONFIGRATION)
假设我有一个目标,由 makefile 中的 foreach 循环组成
# 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 目标上
make run_configs
running application with CONFIG=1
making logdata
cp logdata/* CONFIG_/.
预期的目录是 CONFIG_1 但构建的是 CONFIG_
我知道 makefile 首先被解析,所以变量 LOG_DIR 被评估为 CONFIG_ 因为此时foreach变量VAR为null。
我找不到在每次执行 foreach 循环时更新 LOG_DIR 变量的方法。
有没有办法实现这个。
嗯……?当您调用递归 make 时,您正在设置变量 CONFIGRATION
:
make run CONFIGRATION=$(VAR)
但是当你构建你使用的变量时 $(VAR)
:
LOG_DIR=CONFIG_$(VAR)
CONFIGRATION
与 VAR
不同。您需要将 VAR
传递给 submake:
make run VAR=$(VAR)
或在构建变量时使用CONFIGRATION
:
LOG_DIR=CONFIG_$(CONFIGRATION)