gfortran 使循环依赖下降

gfortran make circular dependency dropped

我正在 运行在 windows 上使用 GNU Make 4.1 创建一个 makefile。我看过很多关于这个主题的 SO 链接,但它们似乎都是针对 C 或 C++ 的。我不确定是否适用相同的规则,而且由于我使用的是 windows,语法似乎也有点不同。

这是我的 make 文件:

 FC      = gfortran
 FCFLAGS = -O0 -Og -Wall -pedantic -fbacktrace -fcheck=all
 # FCFLAGS = -O2
 MODDIR = "bin"
 FCFLAGS += -J$(MODDIR) -fopenmp -fimplicit-none -Wuninitialized

 SRCS_C =\
    gridFun.f90 \
    test.f90

 OBJS_C   = $(SRCS_C:.c=.o)
 TARGET = test

 all: $(TARGET)

 $(TARGET): $(OBJS_C)
    $(FC) -o $@ $(FCFLAGS)  $(OBJS_C)

 $(OBJS_C): $(SRCS_C)
    $(FC) $(FCFLAGS) -c $(SRCS_C)

 cleanMod:
    del *.mod
 cleanObj:
    del *.o

我 运行 我的 make 文件

    gmake

而且我注意到

    mingw32-make

似乎产生了相同的结果。我得到的错误是:

 gmake: Circular gridFun.f90 <- gridFun.f90 dependency dropped.
 gmake: Circular test.f90 <- gridFun.f90 dependency dropped.
 gmake: Circular test.f90 <- test.f90 dependency dropped.
 gfortran -O0 -Og -Wall -pedantic -fbacktrace -fcheck=all -J"bin" -fopenmp -fimpl
 icit-none -Wuninitialized -c gridFun.f90 test.f90
 gfortran -o test -O0 -Og -Wall -pedantic -fbacktrace -fcheck=all -J"bin" -fopenm
 p -fimplicit-none -Wuninitialized  gridFun.f90 test.f90

任何有关如何解决此问题的帮助,以及可能的解释将不胜感激!

您没有 c 来源,因此变量的 _C 后缀不准确(无害但令人困惑)。

真正的问题在于这个 OBJS_C = $(SRCS_C:.c=.o) substitution ref

希望将 .c 个文件更改为 .o 个文件,但您没有任何 .c 个文件。

将其更改为 OBJS_C = $(SRCS_C:.f90=.o),它应该适合您。