Extraneous text after the `else 'directive

The first

I refer to gnu make manual 3.81 because my version is 3.81 (make -v)

section 7.2

conditional-directive
text-if-one-is-true
else conditional-directive
text-if-true
else
text-if-false
endif

so my makefile

  version=ag101p


  ifeq ($(version),ag101p)
  ag101p:ag101p.o zigbee.o
    cc -o $@ $(CFLAGS) $^
  else ifeq($(version),test)
    @echo "test"
  else
  CFLAGS += -DM2C
  m2c:m2c.o zigbee.o
    cc -o $@ $(CFLAGS) $^
  endif

  .PHONY:clean
  clean:CLL
    rm -rf *.o ag101p m2c
  CLL:

but console display

Makefile: 7: Extraneous text after the `else 'directive

+4
source share
1 answer

Adding a space between "else ifeq" and "(" works on the linux platform, but this will not work on windows. I fix this on windows by adding endther endif to make "if else" nested.

ifeq ($(version),ag101p)
  ag101p:ag101p.o zigbee.o
    cc -o $@ $(CFLAGS) $^
else
ifeq ($(version),test)
    @echo "test"
else
  CFLAGS += -DM2C
  m2c:m2c.o zigbee.o
    cc -o $@ $(CFLAGS) $^
endif
endif

  .PHONY:clean
  clean:CLL
    rm -rf *.o ag101p m2c
  CLL:
+3
source

Source: https://habr.com/ru/post/1624064/


All Articles