Makefile中的条件:缺少分隔符错误?

Makefile中的条件:缺少分隔符错误?,makefile,Makefile,我想在Makefile中编写一些条件语句,遵循上的指南。但是,我得到的错误是Makefile:219:**缺少分隔符。停止。,其中第219行是带有ifeq语句的行。带有-$(FC)的三行确实以一个选项卡开始 我用的是GNU Make 3.81。非常感谢您的帮助 [...] mod: $(MODBIN) $(MODBIN): $(MODSRC) ifeq($(FC),gfortran) -$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $

我想在Makefile中编写一些条件语句,遵循上的指南。但是,我得到的错误是
Makefile:219:**缺少分隔符。停止。
,其中第219行是带有
ifeq
语句的行。带有
-$(FC)
的三行确实以一个选项卡开始

我用的是GNU Make 3.81。非常感谢您的帮助

[...]

mod: $(MODBIN)

$(MODBIN): $(MODSRC)
ifeq($(FC),gfortran)
    -$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq($(FC),ifort)
    -$(FC) $(MODFLAGS) -module $(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq ($(FC),xlf2003_r)
    -$(FC) $(MODFLAGS) -qmoddir=$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
endif

io: $(IOBIN)

[...]
编辑:根据@sagar sakre的建议,我改为:

[...]
mod: $(MODBIN)

$(MODBIN): $(MODSRC)
    ifeq($(B3dC),gfortran)
    -$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
    else ifeq($(B3dC),ifort)
    -$(FC) $(MODFLAGS) -module $(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
    else ifeq ($(B3dC),xlf2003_r)
    -$(FC) $(MODFLAGS) -qmoddir=$(INCPATH) $(INCLUDE) -c -o $@ $(subst $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
    endif endif endif

io: $(IOBIN)
[...]
但是,现在我得到了这个错误:

ifeq(xlf,gfortran)
/bin/sh: -c: line 0: syntax error near unexpected token `xlf,gfortran'
/bin/sh: -c: line 0: `ifeq(xlf,gfortran)'
make: *** [build/basic.o] Error 2

所以这里还是有问题…

在ifeq之后应该有一个[space]

mod: $(MODBIN)
$(MODBIN): $(MODSRC)
ifeq ($(FC),gfortran)
    -$(FC) $(MODFLAGS) -J$(INCPATH) $(INCLUDE) -c -o $@ $(subst
    $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq ($(FC),ifort)
    -$(FC) $(MODFLAGS) -module $(INCPATH) $(INCLUDE) -c -o $@ $(subst
    $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
else ifeq ($(FC),xlf2003_r)
     -$(FC) $(MODFLAGS) -qmoddir=$(INCPATH) $(INCLUDE) -c -o $@ $(subst 
     $(BUILDPATH),$(MODPATH),$*).f90 $(NETCDFLDFLAGS)
endif
一般的Makefile是

target:dependencies
ifeq ( parm1, parm2)
 [TAB]   operation
else
 [TAB]   operation
endif

谢谢这让我又前进了一步,但还没有达到目标。现在我得到一个语法错误。请看我的最新帖子。很抱歉我误导了你。下面编辑了正确的解决方案。