我已经研究这个问题有一段时间了,但仍然不知道出了什么问题。
我的 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.
所有文件都位于同一目录中,如图所示:
thanks
Make 不知道这一点.f90
是后缀,因此您的后缀规则无效。如果 make 不知道后缀,那么仅仅声明后缀规则是不够的。如果你想使用后缀规则,你还必须添加新的后缀.SUFFIXES
伪目标,像这样:
.SUFFIXES: .f90
或者你可以使用模式规则,它不需要这个(但是是 GNU make 特定的):
%.o : %.f90
${F90} -c ${INCLUDE_MODULES} $<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)