Module 在fortran 90中编译gfortran的makefile模块

Module 在fortran 90中编译gfortran的makefile模块,module,makefile,fortran90,Module,Makefile,Fortran90,我尝试使用makefile将一些模块链接到主程序 我有一个名为SimParam_mod.f90的模块,它有: MODULE simParam integer, parameter:: yDim = 80 integer, parameter:: xDim = 80 integer, parameter:: iterper = 100 integer, parameter:: tMax = 2000 END MODULE simParam 使用make选项编译后: MODDIR

我尝试使用makefile将一些模块链接到主程序

我有一个名为SimParam_mod.f90的模块,它有:

MODULE simParam
  integer, parameter:: yDim = 80
  integer, parameter:: xDim = 80

  integer, parameter:: iterper = 100
  integer, parameter:: tMax = 2000
END MODULE simParam
使用make选项编译后:

MODDIR =../module 
CFLAGS=-I$(IDIR)
OBJDIR=obj
LIBDIR =../lib

LIBS=-lm

CF=gfortran
CFLAGS=-I.

OBJ = main.o D2Q9Const_mod.o SimParam_mod.o 


%.o: %.f90
        $(CF) -c -O3 -o $@ $< -I$(MODDIR)

run: $(OBJ)
    $(CF) -o $@ $^ $(CFLAGS)
MODDIR=../module
CFLAGS=-I$(IDIR)
OBJDIR=obj
LIBDIR=../lib
LIBS=-lm
CF=gfortran
CFLAGS=-I。
OBJ=main.o D2Q9Const_mod.o SimParam_mod.o
%.o:%.f90
$(CF)-c-O3-o$@$<-I$(MODDIR)
运行:$(OBJ)
$(CF)-o$@$^$(CFLAGS)
iterpertMax存储的值不会更新。我正确地保存了它,使用gfortran-c编译的模块没有发现任何问题,并且创建了.mod文件

我检查了.mod文件,它们存储的值不是module.f90、iterper=1和tMax=20中指定的值,应该分别为100和2000。我所能说的是,我真的不知道如何使用make指令,而且存储的这些错误值是我以前定义的值。。有件事我错过了

提前感谢您的帮助


Puigar

正如Mark所说,我只需要在makefile中添加一个命令来删除.o和.mod文件并重新编译程序。在那种情况下,它工作得很好

只是补充: rm-f*.o

感谢所有对这条线感兴趣的人


Puigar

删除您可以找到的所有
.mod
文件和所有
.o
文件。重新编译。然后出现一个错误,主程序没有重新识别模块,因为它们不是以前编译的,我需要先单独编译它们吗?好的,问题解决了,我只需要先编译模块,然后再编译主程序。谢谢,无论如何,我可以更改和更新模块的值,但是我需要每次删除.o.mod来更新我的参数。为什么会发生这种情况?在我看来,make进程运行时并没有过度写入现有的
.mod
.o
文件。我之所以发表评论而不是回答,是因为我没有提供这样的专业知识。使用你最喜欢的搜索引擎,或者等待其他人发现你的问题并尝试给你答案。