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