2013-12-04 6 views
2

Я пытаюсь использовать make-файл, чтобы связать некоторые модули с основной программой.makefile module compilation gfortran in fortran 90

У меня есть модуль под названием SimParam_mod.f90, который имеет:

MODULE simParam 
    integer, parameter:: yDim = 80 
    integer, parameter:: xDim = 80 

    integer, parameter:: iterper = 100 
    integer, parameter:: tMax = 2000 
END MODULE simParam 

После компиляции с помощью опции грима:

MODDIR =../module 
CFLAGS=-I$(IDIR) 
OBJDIR=obj 
LIBDIR =../lib 

LIBS=-lm 

CF=gfortran 
CFLAGS=-I. 

OBJ = main.o D2Q9Const_mod.o SimParam_mod.o 


%.o: %.f90 
     $(CF) -c -O3 -o [email protected] $< -I$(MODDIR) 

run: $(OBJ) 
    $(CF) -o [email protected] $^ $(CFLAGS) 

значения сохраненной для iterper и Tmax не обновлено. Я сохраняю его правильно, и модули, скомпилированные с помощью gfortran -c, не видят никаких проблем и создают файлы .mod.

Я проверил файлы .mod и сохранил их со значениями, которые не указаны в модуле.f90, iterper = 1 и tMax = 20 и должны быть соответственно 100 и 2000. Все, что я могу сказать, это то, что я не знаю, как использовать инструкции make и что эти неправильные значения, которые хранятся, являются прежними значениями, которые я определил намного раньше .. есть что-то, что я пропустил.

Заранее спасибо за вашу помощь!

Puigar

+1

Удалить все '.mod' файлы, которые вы можете найти и все' .o' файлы. Постройте снова заново. –

+0

появляется сообщение о том, что основная программа не восстанавливает модули, потому что они не скомпилированы ранее, возможно, мне нужно сначала их скомпилировать отдельно? –

+0

ОК, проблема решена, мне просто пришлось скомпилировать сначала модули, а затем основные. Спасибо в любом случае –

ответ

0

Я просто должен был добавить как Марк сказал команда в Makefile, чтобы удалить .o и .mod файлы и перекомпилировать программу. В этом случае отлично работает.

просто добавив: гт -f * .o

Спасибо всем ребятам, которые были заинтересованы в теме!

Puigar

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