在我的Makefile顶部,在任何规则之前,我有以下内容:
ifeq ($(ENVIRONMENT),LOCAL)
TARGET := local_target
else
TARGET := hello
endif
如果未设置ENVIRONMENT
环境变量,或设置为LOCAL
以外的值,而不是将TARGET
设置为hello
,我希望makefile为停止并以-1退出。
我能这样做吗?当我将TARGET := hello
更改为exit -1
时,我收到以下错误:
Makefile:4: *** missing separator. Stop.
我怎样才能做到这一点?
答案 0 :(得分:3)
exit
是一个shell命令,因此您可以使用Makefile中的shell assignment operator(即:!=
)来调用exit
:
TARGET != exit -1
这实际上相当于:
TARGET := $(shell exit -1)
再次注意,这会调用一个shell,它依次运行shell exit
内置的,即:它不会退出make
。处理makefile时退出的典型方法是调用GNU Make的error
内置函数:
$(error Error-message-here)
把所有东西放在一起:
ifeq ($(ENVIRONMENT),LOCAL)
TARGET := local_target
else # indent with spaces, not a tab
$(error ENVIRONMENT not set to LOCAL)
endif