我在make文件中定义了一个列表,用户需要设置一个环境变量,我需要在这个列表中查找这个变量。使用gnu make是否有办法实现?我想在任何recipe之外,在make开始构建任何目标之前执行此操作。这是一个QA检查,以确保用户将环境变量设置为范围/列表内的值。
在终端上:
setenv ENV_PARAM x
在Makefile中:
PARAMS := a b c
if ${ENV_PARAM} exists in $(PARAMS)
true
else
false
endif
@MadScientist的答案是有效的。有没有一种方法可以使用foreach循环包装if块以测试多个参数?
KEYS := PARAMS FACTORS
PARAMS := a b c
FACTORS := x y z
foreach v in ($(KEYS)) {
ifneq ($(filter $(ENV_$(v)),$(v)),)
$(info $(ENV_$(v)) exists in $(v))
else
$(info $(ENV_$(v)) does not exist in $(v))
endif
}