makefile: ifeq - what's wrong?

chr*_*s01 3 makefile gnu-make

I am looking now for a full hour for the problem... Why is it not IS 0?

I am not a big make guru.

JAVAC := $(shell javac -version 2> /dev/null; echo $$?) 

all:
    @echo $(JAVAC)
ifeq ($(JAVAC), 0)
    @echo "IS 0"
else
    @echo "NOT 0"
endif
Run Code Online (Sandbox Code Playgroud)

Output:

#> make
0
NOT 0
Run Code Online (Sandbox Code Playgroud)

I'm using GNU Make 4.0.

Jen*_*ens 5

空格是被比较字符串的一部分。看起来您在某处有一个额外的空格,可能是 JAVAC:= 赋值中的最后一个字符。

为了检验这个假设,使用

all:
      @echo '<$(JAVAC)>'
Run Code Online (Sandbox Code Playgroud)