module - makefile 模块在 fortran 90 中编译 gfortran

标签 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 =../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)

iterpertMax存储的值不会更新。我正确保存它,并且使用 gfortran -c 编译的模块没有看到任何问题,并且创建了 .mod 文件。

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

预先感谢您的帮助!

普伊加尔

最佳答案

我只需像 Mark 所说的那样在 makefile 中添加一个命令来删除 .o 和 .mod 文件并重新编译程序。在这种情况下工作完美。

只需添加: rm -f *.o

感谢所有对该主题感兴趣的人!

普伊加尔

关于module - makefile 模块在 fortran 90 中编译 gfortran,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378038/

相关文章:

c++ - -DNDEBUG 通常来自哪里?

c++ - 交叉编译 gcc

loops - 在 Fortran 循环中使用指针变量

java - 在 IntelliJ IDEA 中使用模块

Python 诅咒 : module function vs instance function

c - 设备驱动程序 Hello world 的 make 文件出错

arrays - Fortran 90 中 double 的最大数组大小是多少?

fortran - `MPI_ERR_TRUNCATE: message truncated` 错误

python - 在可移植 python 上导入模块

python - 为什么 sphinx automodule 不显示任何模块成员?