c++ - 如何使用 Cmake 在 Linux 上设置 MKL

标签 c++ cmake clion

我使用了此链接中提供的相同代码 How to setup MKL on linux with CMake

但是我收到了这个错误 找不到 MKL(缺少:MKL_LIBRARIES MKL_INCLUDE_DIRS

我尝试将 MKLROOT 设置为以下内容 SET(ENV{MKLROOT} "/home/usr/intel/mkl:$ENV{MKLROOT}")

这就是 findmkl.cmake 模块在没有为 mklroot 设置环境的代码行时的样子(我在下面的链接中使用了相同的代码)

https://gist.github.com/scivision/5108cf6ab1515f581a84cd9ad1ef72aa

我怀疑问题出在设置 mklroot 但不确定,感谢任何帮助。

最佳答案

如果 MKLROOT 最初未设置,语句 SET(ENV{MKLROOT} "/home/usr/intel/mkl:$ENV{MKLROOT}") 设置 MKLROOT 等于 /home/usr/intel/mkl:,路径格式不正确。相反,您可以使用

set(ENV{MKLROOT} "/home/usr/intel/mkl")

或者,您可以在外部设置该环境变量的值,例如,

source /home/usr/intel/bin/compilervars.sh intel64

然后运行 ​​CMake。在这种情况下,不需要 CMake set 语句,这是一种更便携的解决方案。

更新:截至 2021 年 2 月 20 日,compilervars.sh 未在英特尔 MKL 中提供,应使用以下命令设置环境:

source /opt/intel/oneapi/setvars.sh intel64

或安装 oneAPI 的任何地方。

关于c++ - 如何使用 Cmake 在 Linux 上设置 MKL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58666921/

相关文章:

python - 在 PyCharm/CLion 中运行脚本之前激活 conda env

c++ - 使用 JetBrains Clion IDE (C++) 的 Cilk 加注解

c++ - 如何静态捕捉明显的未定义行为?

c++ - 如何同时检查多个索引的 `std::vector<bool>` 是否为真?

c++ - 在 SFML 中移动一个球

c++ - 从 pybind11 包装的代码动态链接共享库

c++: 未定义的错误引用

c++ - gcov 报告的析构函数中的分支是什么?

c++ - 存储 OpenGL 状态

c++ - 如何将 CMake 文件构造为通用但又特定于操作系统?