gfortran使循环依赖性下降

时间:2015-01-23 18:05:19

标签: makefile fortran mingw gfortran

我在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

有关如何解决此问题的任何帮助,也许会非常感谢您的解释!

1 个答案:

答案 0 :(得分:3)

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

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

预计会将.c个文件更改为.o个文件,但您没有任何.c个文件。

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