Fortran文件依赖于Intel ifort

时间:2013-11-08 15:15:49

标签: module makefile fortran fortran90

我在使用英特尔Fortran 2012编译器的标准Unix环境中工作。 由于我的代码有一些旧的.f文件和一些较新的.f90文件,因此makefile按以下结构组织,

f_sources= ... ...
f90_sources= ... ...

f_objects = $(patsubst %.f,%.o,$(f_sources))
f90_objects = $(patsubst %.f90,%.o,$(f90_sources))

$(f_objects): %.o: %.f
        @echo compiling $<
        $(FC) $(FC_FLAGS) -c $< -o $@

# compile f90 files:
$(f90_objects): %.o: %.f90
        @echo compiling $<
        $(FC) $(FC_FLAGS) -c $< -o $@

问题是,很少有奇怪的.f文件依赖于某些.f90文件中定义的模块,然后编译器似乎无法检测到依赖关系,因为我先编译所有.f } files ...

Error in opening the compiled module file.  Check INCLUDE paths.

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

添加

f77_file_with_module_dependency.o: f90_file_for_module.o

到你的Makefile。

答案 1 :(得分:0)

假设您有there.f文件取决于mod_here.f90,您在makefile中声明以下内容:

there.o: mod_here.o
      $(FC) $(FC_FLAG) -c there.f -o there.o

当makefile到达此文件there.f时,它将看到它依赖于尚未编译的mod_here.f90,因此它将编译它。