带有许多模块的静态库

时间:2012-04-10 01:11:30

标签: fortran

如果使用fortran开发静态库:

lib由多个模块组成,例如: “模块a”,“模块b”等。

每个模块都有公共变量,类型和程序。

现在,想在程序“test”中使用lib。

一种可能的方法是使用每个模块,并在链接期间提供* .a lib文件。 e.g:

program test
  use a
  use b
  ...
end program

但如果只需要使用/包含一个模块/ * .h,那会更好。 e.g:

program test
  use all
  ...
end program

一种可能的解决方案是将所有公共变量,类型和过程接口复制到“module all”中,并使用“module all”而不是单个模块。

但是如果修改了任何单个模块,还需要修改“module all”以满足更改。

是否有更合适的方法可以解决,还是有自动工具来生成“全部模块”?

非常感谢您的任何意见。

2 个答案:

答案 0 :(得分:3)

我不会将单个模块中的代码复制到模块“all”中,因为正如您所说,这会在代码更改时导致额外的工作。和错误的可能性。相反,在模块“all”中“使用”这些模块。然后当你想要它们时,你们“全部使用模块”。当您需要特定模块时,可以使用该模块。你必须防范因为它是禁止的是循环模块引用:A使用B使用C使用A是不允许的。

答案 1 :(得分:2)

似乎最终的解决方案是使用submodule,遗憾的是gcc没有支持它。

请参阅: http://fortranwiki.org/fortran/show/Submodules