在我的项目中,我在
blas
实现下大量使用了mkl
子例程,由于Intel Advisor
,我在编译项目时没有问题,但我无法让fortls
识别功能界面。
我尝试修改
Modern Fortran
扩展设置,添加到包含路径/opt/intel/oneapi/mkl/latest/include/
,其中包含包含所有接口的文件mkl_blas.fi
(.mod
文件位于子文件夹mkl/intel64/ilp64
中),但linter突出显示蓝色线 use blas95
表示在项目中找不到它,并且仍然要求 external
或 dgemm
的显式接口。
fortls
无法读取 .mod
文件,因为每个编译器供应商都使用自定义格式来创建它们;它只能理解来源。如果您有 MKL 的源代码,您可以将它们添加到需要通过编辑解析选项进行解析的文件中,请参阅文档:
https://fortls.fortran-lang.org/options.html#sources-file-parsing这将允许您对 MKL 界面进行悬停、查看、转到等操作。您可能需要将
fortls
扩展设置为有效的 Fortran 源。
话虽这么说,linter 和语言服务器 (fortls) 是两个不同的东西,因此有不同的选项。 linter 使用适当的编译器(默认为 gfortran)来模拟编译您的代码。我猜想 .mod 文件是用.fi
而不是
ifx
编译的,所以:
将 linter 设置为 ifxgfortran