使用ifeq测试变量

时间:2017-09-18 13:07:40

标签: makefile

我尝试编写此动态目标以在运行实际目标之前检查变量:

.PHONY: check-env-%
check-env-%:
ifeq ($(${*}),)
    $(error not found ${*})
endif

以便我可以像:

一样使用它
build: check-env-VERSION

但看起来无法比较它,即使我提供了所需的变量,它也会出错:Makefile:16: *** not found VERSION. Stop.

我相信我正确使用ifeq但不确定为什么无法比较它?

2 个答案:

答案 0 :(得分:2)

docs:"条件控制makefile中实际“看到”的内容,因此在执行时它们不能用于控制配方。&# 34;所以你对$ *的访问总是在makefile分析时产生一个空字符串,留下你的$(错误)作为配方指令。

答案 1 :(得分:1)

Vroomfondel是对的。你可以做的是:

check-env-%:
    test $($*) || (echo $* not found; exit 1;)
    ...
当没有定义变量时,

test将停止。