這裏是我的問題:我一直在使用Java進行多年,並享受有許多目錄分離代碼的不同區域。對於我目前的項目,我正在編寫Fortran代碼,它應該在Windows和Unix/Linux下編譯。對於Windows,我使用帶有MinGW/gfortran工具的Eclipse/Photran來設置Makefiles。makefile編譯在不同的目錄Fortran源文件
這裏是希望的項目結構(深度嵌套樹狀類似Java的會更好)
dir1/src/*.f95
dir1/make/Makefile_lib1.any
dir1/make/Makefile_lib1.win
dir1/make/Makefile_lib1.unix
dir2/src/*.f
dir2/make/Makefile_lib2.any
dir2/make/Makefile_lib2.win
dir2/make/Makefile_lib2.unix
...
dir_main/src/*.f or *.f95
dir_main/make/Makefile_main.any
dir_main/make/Makefile_main.win
dir_main/make/Makefile_main.unix
我想打電話給make Makefile_main.unix
,這將設立任何具體Unix的變量,然後包括Makefile_main.any
,Makefile_lib1.any
,...
(類似於製作在Windows上)
我到了階段,我可以看到在一個給定的目錄中的所有源文件,如
SRCS := $(wildcard $(SRC_DIR)/*.$(SRC_EXT))
現在我與如何使所有的依賴在Fortran 95的每個源產生*.o
和*.mod
掙扎。
有沒有辦法編譯,這樣所有目標/依賴沒有在他們的名字DIR-路徑時目錄之間進行切換?請注意,我從Eclipse項目所在的其他服務目錄調用make
。任何建議如何進行?
我真的不想與代碼一起做的僅具有一個目錄的常用的Fortran風格 所有的爛攤子。
如果你有'dir2/src/foo.f',你想要'foo.o'和'foo.mod'去哪裏? 「區域」目錄之間是否存在任何依賴關係? – Beta
有很多更好的方法去做我想你想做的事,其中不乏中的一些相關問題列出,並有可能獲得幾十個導遊只有很短的谷歌了。你使用fortran的事實是無關緊要的。一個可能有助於您搜索的詞是「遞歸」,就像「遞歸makefile」中一樣。 –