Makefile if语句导致某些奇怪的行为

时间:2018-11-23 17:16:45

标签: makefile

在我的makefile中,用户提供了一个称为EXEC (make target EXEC=something)的参数。我希望这种情况发生:

if EXEC equals "server"
    make the variable NOT equal to "client"
if EXEC equals "client"
    make the variable NOT equal to "server"

我尝试这样做:

ifeq ($(EXEC),server)
    NOT := client
endif
ifeq ($(EXEC),client)
    NOT := server
endif

我这样说make -f build.mk EXEC=server

输出为:

NOT := client
make[2]: NOT: No such file or directory

为什么会发生此错误?

1 个答案:

答案 0 :(得分:1)

似乎您已经用TAB字符缩进了变量赋值。这意味着该行被视为上一个目标的配方的一部分。

由于您没有提供整个Makefile,或者至少没有提供此之前/之后的Makefile部分,因此我们不能说更多。

但是,通常在makefile中,除非有意将其作为配方的一部分,否则切勿缩进带有TAB字符的任何行。