makefile"没有制定目标的规则"错误

时间:2014-03-21 00:52:15

标签: makefile

我一直在看这个问题,但仍然不知道出了什么问题。

我的makefile看起来像:

    F90    = pgf90
NETCDF_DIR = /opt/netcdf

LBS             = -L$(NETCDF_DIR)/lib -lnetcdff -lnetcdf
INCLUDE_MODULES = -I$(NETCDF_DIR)/include

EXEC = CNG_WRFCHEM_EMI
OBJS = module_CNG_WRFCHEM_EMI_lib.o \
       CNG_WRFCHEM_EMI.o

${EXEC} : ${OBJS}
        ${F90} -o $@ ${OBJS} ${LIBS}

.f90.o:
        ${F90} -c ${INCLUDE_MODULES} $<

clean:
        rm -f ${EXEC} ${OBJS} *.mod

错误消息是:

 make: *** No rule to make target `module_CNG_WRFCHEM_EMI_lib.o', needed by `CNG_WRFCHEM_EMI'.  Stop.

所有文件都与图片显示在同一目录中:

enter image description here

感谢

1 个答案:

答案 0 :(得分:0)

让我们知道.f90是后缀,因此您的后缀规则无效。如果make不知道后缀,那么仅仅声明一个后缀规则是不够的。如果要使用后缀规则,还必须使用.SUFFIXES伪目标添加新后缀,如下所示:

.SUFFIXES: .f90

或者你可以使用模式规则,但不要求这样做(但是特定于GNU make):

%.o : %.f90
        ${F90} -c ${INCLUDE_MODULES} $<