将选项传递给makefile时OPTION = true和OPTION = 1等效吗?

时间:2014-12-18 21:18:49

标签: makefile

我有一个大型的make文件,其中一行显示" ifeq($(OPTION),1)....",这意味着如果我说" make OPTION = 1目标"条件代码将被执行。是' 1'的意思并且' true'像某些语言一样超负荷?具体来说,如果我做了#34; make OPTION = true target"?或者我是否需要将条件更改为"" ifeq($(OPTION),true)...."让这个工作?

1 个答案:

答案 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'.