gpt4 book ai didi

module - Makefile:避免为新文件夹编译 Fortran 模块

转载 作者:行者123 更新时间:2023-12-01 12:55:11 28 4
gpt4 key购买 nike

我有一个使用模块的 Fortran 程序,即它在编译期间创建 .mod 文件。我还编写了一个 Makefile,它使用所有 .f90 - 来自 src/ 的文件将所有创建的 .o - obj/ 中的文件和当前文件夹中的二进制文件,一切正常。

我现在在不同的文件夹中重新编译我的程序以进行不同的计算(例如 calc1/),即我将 Makefile 复制到 calc1/ 中,在 calc1/ 中键入 make all 并且它所做的只是链接,因为目标文件已经存在。但是,如果程序包含任何模块,编译器需要相应的 .mod 文件出现在 calc1/ 中。到目前为止,我重新编译了所有内容(全部清理),但是随着程序的增长,这会花费太多时间!

我想到的一种可能的解决方案是为二进制文件 (bin/) 设置一个特定的文件夹。但这不是一个可行的选择,因为我在队列中有作业,这显然需要一个稳定的二进制文件,同时我也在尝试新功能。

所以,我正在寻找一种解决方案,以某种方式将 .mod 文件处理为类似于 .o 文件,例如将它们放在 obj/ 中。

最佳答案

我希望(大多数?)编译器会指定一个选项来更改模块文件路径。对于 gfortran,选项是 -J-M(来自手册页):

-Jdir
-Mdir
This option specifies where to put .mod files for compiled modules. It is also
added to the list of directories to searched by an "USE" statement.

The default is the current directory.

-M is deprecated to avoid conflicts with existing GCC options.

我认为大多数编译器会在 -I

包含的目录中查找 .mod 文件

编辑

从 gfortran 4.6 开始,不再支持 -M。使用-J

根据我的一个配置脚本,ifortpgf90 的标志是 -module,尽管这些天我几乎从不使用这些编译器所以其他人应该确认...

关于module - Makefile:避免为新文件夹编译 Fortran 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com