Variables 如何在makefile中的每个循环的其他make变量中使用foreach变量?
假设我在makefile中有一个由foreach循环组成的目标Variables 如何在makefile中的每个循环的其他make变量中使用foreach变量?,variables,makefile,gnu-make,Variables,Makefile,Gnu Make,假设我在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:
# 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)
:
configuration
与VAR
不同。您需要将VAR
传递给submake:
make run VAR=$(VAR)
或者在构建变量时使用CONFIGRATION
:
LOG_DIR=CONFIG_$(CONFIGRATION)
将变量传递给sub make可以完美地工作。有没有办法自动将所有此类变量传递给子生成目标?您必须定义“此类变量”的含义。。。所有哪些变量?
LOG_DIR=CONFIG_$(CONFIGRATION)