Makefile 制造失败(gmake)

Makefile 制造失败(gmake),makefile,gnu-make,Makefile,Gnu Make,我的GNU Makefile中有很多变量,用户可能会更改它们的值。如果其中一些值没有任何意义,我希望Makefile在开始执行之前失败 例如: FOODIR=foo BARDIR=bar 可以,但是如果用户将其设置为 FOODIR=foo BARDIR=foo 我希望生成文件失败。我正在寻找正确的语法来实现这一点。比如: ifeq ($(FOODIR),$(BARDIR)) exit 1; endif 但这不起作用。最好的方法是什么?Makefiles不是shell脚本;不能使用诸

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

例如:

FOODIR=foo
BARDIR=bar
可以,但是如果用户将其设置为

FOODIR=foo
BARDIR=foo
我希望生成文件失败。我正在寻找正确的语法来实现这一点。比如:

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

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

Makefiles不是shell脚本;不能使用诸如
exit
之类的shell命令

您可以使用GNU make函数
$(错误…
(如果您的GNU make足够新):


你说得对,手册第8.12节。请记住,网站上的手册版本记录了最新版本(GNU make 4.1)。如果版本较旧,则可能没有所有相同的功能/行为。你应该看看手册,它随GNU的任何版本而来。
ifeq ($(FOODIR),$(BARDIR))
    $(error FOODIR is the same as BARDIR: $(FOODIR))
endif