为什么 Makefile 表达式 "export INTEGER_VAR ?= $(if $(BOOL_VAR),2,5)" 在 BOOL_VAR 为假时导致 INTEGER_VAR=2?
Why does the Makefile expression "export INTEGER_VAR ?= $(if $(BOOL_VAR),2,5)" result in INTEGER_VAR=2 when BOOL_VAR is false?
我的 Makefile 有一行内容如下:
export INTEGER_VAR ?= $(if $(BOOL_VAR),2,5)
然后INTEGER_VAR
用于在以下几行中做出一些决定。
当我执行 make BOOL_VAR=false
时,INTEGER_VAR
取 2
的值
谁能帮我弄清楚为什么?
我正在使用 GNU Make 版本 4.2.1
因为 $(if
只检查 empty/non-empty。它没有类型或 true
或 false
之类的概念。因此,BOOL_VAR=false
测试的东西 $(BOOL_VAR)
不是空字符串,因此在逻辑上是正确的。
我的 Makefile 有一行内容如下:
export INTEGER_VAR ?= $(if $(BOOL_VAR),2,5)
然后INTEGER_VAR
用于在以下几行中做出一些决定。
当我执行 make BOOL_VAR=false
时,INTEGER_VAR
取 2
谁能帮我弄清楚为什么?
我正在使用 GNU Make 版本 4.2.1
因为 $(if
只检查 empty/non-empty。它没有类型或 true
或 false
之类的概念。因此,BOOL_VAR=false
测试的东西 $(BOOL_VAR)
不是空字符串,因此在逻辑上是正确的。