在我的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.
我怎么能做这个工作?
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