代码之家  ›  专栏  ›  技术社区  ›  Andres Moreno Abrego

为什么当BOOL_VAR为false时,Makefile表达式“export INTEGER_VAR?=$(if$(BOOL_VAR),2,5)”会导致INTEGER_VAR=2?

  •  0
  • Andres Moreno Abrego  · 技术社区  · 2 年前

    我的Makefile有一行内容是:

    export INTEGER_VAR ?= $(if $(BOOL_VAR),2,5)
    

    然后 INTEGER_VAR 用于在以下行中做出一些决策。

    当我这么做的时候 make BOOL_VAR=false 这个 整型变量 重视 2.

    有人能帮我弄清楚原因吗?

    我使用的是GNU Make版本4.2.1

    1 回复  |  直到 2 年前
        1
  •  0
  •   Chris Dodd    2 年前

    因为 $(if 只需检查空/非空。它没有类型之类的概念 true false .那么 BOOL_VAR=false 被测试的东西 $(BOOL_VAR) 不是空字符串,逻辑上也是如此。