If statement makefile中的嵌套条件

If statement makefile中的嵌套条件,if-statement,makefile,If Statement,Makefile,这里的makefile有嵌套的if语句来分配变量值和要构建的目标。 当前嵌套结构不是真正的嵌套-它是一系列if语句: 其他的没有任何用处 这是因为makefiles没有等效的elseIf吗 当前结构(为了便于阅读,本文增加了缩进) 所需结构的伪版本: If condition x if condition x.x blah else if condition x.y blah blah endif else if condition

这里的makefile有嵌套的if语句来分配变量值和要构建的目标。 当前嵌套结构不是真正的嵌套-它是一系列if语句: 其他的没有任何用处

这是因为makefiles没有等效的elseIf吗

当前结构(为了便于阅读,本文增加了缩进)

所需结构的伪版本:

If condition x
    if condition x.x
        blah
    else
    if condition x.y
        blah blah
    endif
else
if condition y
    if condition y.x
        blah
    else
    if condition y.y
        blah blah
    endif
endif

这回答了你的问题吗

ifeq ($(VAR1),x)
    ifeq ($(VAR2),x)
        $(info x.x)
    else ifeq ($(VAR2),y)
        $(info x.y)
    endif
else ifeq ($(VAR1),y)
    ifeq ($(VAR2),x)
        $(info y.x)
    else ifeq ($(VAR2),y)
        $(info y.y)
    endif
endif

all:;
演示:

但你也可以:

ifeq ($(VAR1).$(VAR2),x.x)
    $(info x.x)
else ifeq ($(VAR1).$(VAR2),x.y)
    $(info x.y)
else ifeq ($(VAR1).$(VAR2),y.x)
    $(info y.x)
else ifeq ($(VAR1).$(VAR2),y.y)
    $(info y.y)
endif

all:;
演示:


有关更多信息,最好的来源是。

您使用的是哪个版本的make?如果是GNU make,你指的是
$(If…
函数还是
ifeq
ifneq
ifdef
ifndef
条件?GNU make 3.82我指的是ifeq etcy你应该更新你的问题,然后。还有可能改进它的标题。这里的标准措辞是make条件句,而不是if-else。顺便说一下,3.82真的很老了。如果可能的话,你应该考虑升级。很遗憾,这是不可能的——这是在公司集群系统上运行的。(对
else
的支持已添加到GNU make 3.81中,该版本于2006年发布,仅供参考,因此3.82将拥有它。
$ make VAR1=x VAR2=y
x.y
make: 'all' is up to date.
ifeq ($(VAR1).$(VAR2),x.x)
    $(info x.x)
else ifeq ($(VAR1).$(VAR2),x.y)
    $(info x.y)
else ifeq ($(VAR1).$(VAR2),y.x)
    $(info y.x)
else ifeq ($(VAR1).$(VAR2),y.y)
    $(info y.y)
endif

all:;
$ make VAR1=y VAR2=x
y.x
make: 'all' is up to date.