我现在正在寻找整整一小时的问题......
为什么不是IS 0
?
我不是一个伟大的制作大师。
JAVAC := $(shell javac -version 2> /dev/null; echo $$?)
all:
@echo $(JAVAC)
ifeq ($(JAVAC), 0)
@echo "IS 0"
else
@echo "NOT 0"
endif
输出:
#> make
0
NOT 0
我正在使用GNU Make 4.0。
答案 0 :(得分:3)
空格是被比较的字符串的一部分。看起来你在某个地方有一个额外的空间,可能是JAVAC上的最后一个字符:=赋值。
要测试此假设,请使用
all:
@echo '<$(JAVAC)>'
答案 1 :(得分:0)
像这样编写你的比较......
ifeq ($(JAVAC), 0)
...就像这样比较:
ifeq "$(JAVAC)" " 0"
请注意0
之前的空格。
只需使用双引号表示法即可避免任何问题,或使用another valid one:
ifeq 'arg1' 'arg2' ifeq "arg1" "arg2" ifeq "arg1" 'arg2' ifeq 'arg1' "arg2"