【问题标题】:gfortran generate dependencies on module filesgfortran 生成对模块文件的依赖项
【发布时间】:2019-08-07 04:43:27
【问题描述】:

我想使用 gfortran 为 Makefile 生成合适的规则,以及使用模块的源。

例如,如果在src1.f90

program prog
  use module1
  ...
end program

mod_mymods.f90

module module1
 ...
end module module1

我想生成这样的一行

src1.f90: mod_mymods.f90

这可能吗?

this 是否建议 gfortran>=4.5 可以做到这一点?

请注意,找到此类依赖项的唯一方法是解析所有 f90 文件,直到在 use module1module module1 之间找到匹配项。 或者,可以维护源文件 模块的索引,并让make 保持最新。

找到的替代品是:

https://www.geos.ed.ac.uk/homes/hcp/fmkmf

https://www.reddit.com/r/fortran/comments/8n3tr5/makefiles_with_modules_dependency_hierarchies_in/

https://www.systutorials.com/docs/linux/man/1-makedepf90/

https://simplyfortran.com/(但它是一个完整的 IDE)

http://lagrange.mechse.illinois.edu/f90_mod_deps/

https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-gen-dep#70055AC3-6C05-42BB-8ED5-6EBB0E7F5C71

【问题讨论】:

  • 如果你想走这条路,这是你的选择,答案应该保持在主题上,但我真的要注意现代构建系统不需要任何依赖列表,只是自动工作(cmake、scons、waf、FoBiS、...)。
  • USE语句是依赖,当编译器返回找不到.mod的错误时,makefile就中止了。
  • @VladimirF - 谢谢。您知道发布的两个问题吗?
  • 不,我讨厌 Makefiles,因为我花了太多时间试图让它们工作。

标签: makefile fortran dependencies gfortran


【解决方案1】:

似乎无法直接使用gfortran 生成这种依赖关系。

使用cmake(例如)似乎自动解释了这一点,即使我没有检查生成的makefile,我也不知道cmake如何解析src1.f90mod_mymods.f90的内容能够分辨出依赖关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多