我有一个大型的make文件,其中一行显示" ifeq($(OPTION),1)....",这意味着如果我说" make OPTION = 1目标"条件代码将被执行。是' 1'的意思并且' true'像某些语言一样超负荷?具体来说,如果我做了#34; make OPTION = true target"?或者我是否需要将条件更改为"" ifeq($(OPTION),true)...."让这个工作?
答案 0 :(得分:1)
不,它们不相同。
make
只适用于文本,条件将文本“1”与“1”比较为真,或将“true”与“1”比较为假。
您可以使用简单的makefile轻松演示:
ifeq ($(OPTION),1)
$(info OPTION == 1)
endif
ifeq ($(OPTION),true)
$(info OPTION == true)
endif
.PHONY: all
all:
然后使用不同的变量值运行它:
$ make
make: Nothing to be done for `all'.
$ make OPTION=1
OPTION == 1
make: Nothing to be done for `all'.
$ make OPTION=true
OPTION == true
make: Nothing to be done for `all'.