这是我的问题:我已经使用 Java 很多年了,并且喜欢有许多目录来分隔代码的不同区域。对于我当前的项目,我正在编写 Fortran 代码,它应该在 Windows 和 Unix/Linux 下编译。对于 Windows,我使用 Eclipse/Photran 和 MinGW/gfortran 工具来设置 Makefile。
这是所需的项目结构(类似于 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-path?请注意,我是make
从 Eclipse 项目所在的其他服务目录调用的。任何建议如何进行?
我真的不想采用通常的 Fortran 风格,即只有一个目录,其中包含所有乱七八糟的代码。