我在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
有关如何解决此问题的任何帮助,也许会非常感谢您的解释!
答案 0 :(得分:3)
您没有c
来源,因此变量的_C
后缀不准确(无害但令人困惑)。
真正的问题在于OBJS_C = $(SRCS_C:.c=.o)
substitution ref。
预计会将.c
个文件更改为.o
个文件,但您没有任何.c
个文件。
将其更改为OBJS_C = $(SRCS_C:.f90=.o)
,它应该适合您。