我一直在看这个问题,但仍然不知道出了什么问题。
我的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.
所有文件都与图片显示在同一目录中:
感谢
答案 0 :(得分:0)
让我们知道.f90
是后缀,因此您的后缀规则无效。如果make不知道后缀,那么仅仅声明一个后缀规则是不够的。如果要使用后缀规则,还必须使用.SUFFIXES
伪目标添加新后缀,如下所示:
.SUFFIXES: .f90
或者你可以使用模式规则,但不要求这样做(但是特定于GNU make):
%.o : %.f90
${F90} -c ${INCLUDE_MODULES} $<