如果使用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”以满足更改。
是否有更合适的方法可以解决,还是有自动工具来生成“全部模块”?
非常感谢您的任何意见。
答案 0 :(得分:3)
我不会将单个模块中的代码复制到模块“all”中,因为正如您所说,这会在代码更改时导致额外的工作。和错误的可能性。相反,在模块“all”中“使用”这些模块。然后当你想要它们时,你们“全部使用模块”。当您需要特定模块时,可以使用该模块。你必须防范因为它是禁止的是循环模块引用:A使用B使用C使用A是不允许的。
答案 1 :(得分:2)
似乎最终的解决方案是使用submodule
,遗憾的是gcc没有支持它。