首页 > 解决方案 > 为什么当我使用 Makefile 时我的 Makefile 不生成 *.mod

问题描述

我正在尝试制作简单的 Makefile 来构建我的程序。

我的Makefile文件如下:

main.f是主要源代码,test1.f是模块。

default: test.out

test.out : main.o test1.o
    gfortran main.o test1.o -o test.out

test1.o: test1.f
    gfortran -c test1.f

main.o: main.f
    gfortran -c main.f


clean :
    rm -f ./*.out
    rm -f ./*.o
    rm -f ./*.mod

当我make在终端中命令时,它给了我一个错误

Fatal Error: Cannot open module file 'test1.mod' for reading at (1): No such file or directory

(1) 显示错误发生的位置。它在我定义使用模块 test1 的主源文件行中,即use test1

如果我命令gfortran -c test1.f然后命令make它构建可执行文件没有任何问题。

我的问题是,即使我在模块的 Makefile 中编写了用于制作目标文件的行,为什么它不起作用?

标签: makefilemodulefortran

解决方案


您的 Makefile 依赖项是错误的。您需要在 main.f90 之前编译 test1.f90。所以test.out : main.o test1.o改为test.out: test1.o main.o.


推荐阅读