我曾经在一个名为umat.f90
的文件中执行
!!! umat.f90
module1
!! Content of module1
end module1
module2
!! Content of module2
end module2
!! This has to be a subroutine to interface with some legacy code in a software called ABAQUS
subroutine umat (argument-list)
use module1
use module2
!! Content of umat
end subroutine umat
这很有效。我可以使用ifort -c umat.f90
,然后生成umat.obj
链接到名为ABAQUS
的软件(我无法修改)。现在,由于可以重复使用module1
和module2
,因此我希望将它们保存在单独的.f90
文件中,以符合DRY原则。因此,这将成为三个单独的文件:
文件#1:
!!! module1.f90
module1
!! Content of module1
end module1
文件#2:
!!! module2.f90
module2
!! Content of module2
end module2
文件#3:
!!! umat.f90
!! This has to be a subroutine to interface with some legacy code in a software called ABAQUS
subroutine umat (argument-list)
use module1
use module2
!! Content of umat
end subroutine umat
但是,现在如果我运行ifort /c module1.f90 module2.f90 umat.f90
,它将生成3个obj文件。 umat.obj
似乎不再包含module1
和module2
的模块信息。
鉴于我只能提供一个.obj
文件与ABAQUS接口,我可以将它们编译成一个大的.obj
文件吗?
PS:我知道我可以使用python脚本来复制&每次自动将三个文件粘贴到一个文件中,但这似乎是一种非常肮脏和不优雅的方式。
答案 0 :(得分:0)
我还没有对此进行过测试,但我阅读了ifort文档,/Qipo[n]
选项可能会有效。来自this:
/ Qipo [n]的 此选项启用文件之间的过程间优化。 n 是一个可选的整数,指定编译器应创建的目标文件的数量。整数必须大于或等于0.如果n大于0,编译器将生成n个目标文件,除非n超过源文件数(m),在这种情况下编译器只生成m个目标文件。
例如:ifort /Qipo[1] /c module1.f90 module2.f90 umat.f90
希望它有效!