2014-10-28 31 views
1

我在我的GNU Makefile中有一堆变量,用户可能会更改它们的值。我希望Makefile在开始执行之前失败,如果其中一些值没有任何意义。未通过make(gmake)

例如:

FOODIR=foo 
BARDIR=bar 

是好的,但如果用户将其设置为

FOODIR=foo 
BARDIR=foo 

我想在Makefile失败。我正在寻找正确的语法来做到这一点。例如:

ifeq ($(FOODIR),$(BARDIR)) 
    exit 1; 
endif 

但这并不起作用。这样做的最好方法是什么?

回答

3

Makefiles不是shell脚本;你不能使用shell命令如exit

有一个GNU使功能$(error ...)你可以使用(如果你的GNU化妆是足够新):

ifeq ($(FOODIR),$(BARDIR)) 
    $(error FOODIR is the same as BARDIR: $(FOODIR)) 
endif 
+0

咄,你是对的,手册中部分8.12。 https://www.gnu.org/software/make/manual/make.html – 2014-10-28 18:46:59

+0

请记住,网站上的手册版本记录了当前的最新版本(GNU make 4.1)。如果版本较旧,您的版本可能不具备所有相同的功能/行为。你应该看看GNU的任何版本附带的手册。 – MadScientist 2014-10-28 18:48:55