2015-06-15 107 views
0

我有一个名为solidsolver.f90的fortran主程序和一个名为read_mesh.f90的模块。该模块包含两个子程序,并在主程序中使用。我可以手动编译它们,但不能用makefile。我的makefile文件被命名为makefile.makefile,它给我一个错误:Fortran:生成文件错误

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

我需要写在一个简洁的方式一个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

亚历克斯是正确的。但实际上,makefile的内容是错误的。我改变它如下,它的工作原理:

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正在寻找按以下顺序生成文件(从该名男子页):

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

使用一个名为makefile.makefile文件,你需要告诉make使用(非标准)文件明确:

make -f makefile.makefile 
+0

感谢您的回答和编辑这个问题。但实际上这不是唯一的错误。 –