【问题标题】:gfortran make circular dependency droppedgfortran使循环依赖下降
【发布时间】:2015-01-23 18:05:18
【问题描述】:

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

这是我的制作文件:

 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

任何关于如何解决这个问题的帮助,也许一个解释将不胜感激!

【问题讨论】:

    标签: makefile fortran mingw gfortran


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 那行得通。谢谢你。一旦我能够(至少 10 分钟),我会接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多