2015-06-15 111 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

感謝您的回答和編輯這個問題。但實際上這不是唯一的錯誤。 –