2015-01-23 4 views
2

Я запускаю make-файл с помощью GNU Make 4.1 на окнах. Я видел много ссылок SO по этой теме, но все они кажутся для C или C++. Я не уверен, что применяются те же правила, и поскольку я использую окна, синтаксис, похоже, тоже немного отличается.gfortran сделать круговую зависимость сброшен

Вот мой макияж файла:

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 [email protected] $(FCFLAGS) $(OBJS_C) 

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

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

Я бегу мой грим файл с

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 

Любой помощи о том, как это исправить, и, возможно, объяснение было бы весьма признателен!

ответ

3

У вас нет c источников, поэтому суффикс _C не является точным (безвредным, но запутанным).

Настоящая проблема заключается в этом OBJS_C = $(SRCS_C:.c=.o)substitution ref.

Ожидается изменение .c файлов в файлы .o, но у вас нет .c файлов.

Изменить это на OBJS_C = $(SRCS_C:.f90=.o), и оно должно работать на вас.

+0

Это сработало. Спасибо. Я отвечу на ваш ответ, как только смогу (минимум 10 минут). – Charlie

Смежные вопросы