2015-06-15 3 views
0

У меня есть основная программа fortran, называемая solidsolver.f90, и модуль под названием read_mesh.f90. Модуль содержит две подпрограммы и используется в основной программе. Я могу скомпилировать их вручную, но не с make-файлом. Мой Makefile назван makefile.makefile, и это дает мне ошибку:Fortran: makefile error

make: *** No targets specified and no makefile found. Stop.

я нужен Makefile написанный в сжатой форме, потому что в будущем мой код будет расти в геометрической прогрессии. Вот Makefile:

OBJECTS = read_file.o solidsolver.o 

    MODULES = read_file.mod 

    .PHONY: clean 

    main.exe: $(MODULES) $(OBJECTS) 
     gfortran $(OBJECTS) -o main.exe 

    %.o: %.f90 
     gfortran -c $< 

    %.mod: %.f90 
     gfortran -c $< 

    clean: 
     rm -f $(OBJECTS) $(MODULES) main.exe 

ответ

0

Alex is right. Но на самом деле содержимое make-файла неверно. Я изменил его следующим образом:

OBJECTS = read_file.o solidsolver.o 
    MODULES = read_file.mod 
    FC = gfortran 
    main.exe: $(OBJECTS) 
     $(FC) -o main $(OBJECTS) 

    solidsolver.o: $(MODULES) solidsolver.f90 
     $(FC) -c solidsolver.f90 

    %.mod: %.f90 
     $(FC) -c $< 

    %.o: %.f90 
     $(FC) -c $< 

    clean: 
     rm -f *.o *.mod main 
1

GNU make ищет Makefiles в следующем порядке (от страницы человека):

[...] GNUmakefile, makefile, and Makefile, in that order.

Чтобы использовать файл с именем makefile.makefile, вам нужно сказать сделать, чтобы использовать (нестандартный) файл:

make -f makefile.makefile 
+0

Спасибо за ваш ответ и редактирование этого вопроса. Но на самом деле это не единственная ошибка. –

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