'else'之后的无关文本指示

时间:2016-01-13 08:28:02

标签: makefile gnu-make

首先

我引用gnu make manual 3.81,因为我的版本是3.81(make --v)

第7.2节

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

所以我的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:

但是控制台显示

Makefile:7:'else'之后的无关文字指令

2 个答案:

答案 0 :(得分:3)

通过在“else ifeq”和“(”在Linux平台上工作)之间添加一个空格。但是在Windows上它将无法工作。我通过添加anther endif在Windows上修复此问题,使“if else”嵌套。

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:

答案 1 :(得分:0)

我遇到了同样的问题。解决方案:使用Cygwin安装程序安装make的GNU版本。