Eigen3 在 Linux 上找不到 mkl.h
Eigen3 cannot find mkl.h on Linux
我正在尝试在 Eigen3 中编译一个支持 MKL 的程序。但是,我将 运行 保留为
/usr/include/eigen3/Eigen/src/Core/util/MKL_support.h:58:13: fatal error: 'mkl.h' file not found
我通过 oneapi 安装了 MKL,MKL_ROOT 被正确定义为环境变量。 mkl.h 在 /opt/intel/oneapi/mkl/latest/include
的系统上
CMakeLists.txt 文件具有以下信息:
find_package(Eigen3 3.3 REQUIRED)
find_package(BLAS REQUIRED)
find_package(MKL REQUIRED)
set(BLA_VENDOR Intel10_64lp)
add_executable(${TARGET_NAME} ${SOURCE_FILES} ${INCLUDE_FILES})
target_sources(${TARGET_NAME}
PRIVATE main.cpp
test_mkl.cpp
)
add_definitions(-DEIGEN_USE_MKL_ALL)
target_link_libraries(${TARGET_NAME}
PRIVATE Eigen3::Eigen ${BLAS_LIBRARIES}
${MKL_LIBRARIES})
message("BLAS:")
message("${BLAS_INCLUDE_DIRS}")
if (MKL_FOUND)
message("MKL")
message("${MKL_INCLUDE_DIRS}")
endif()
target_include_directories(${TARGET_NAME}
PRIVATE ../../include
PRIVATE ${EIGEN3_INCLUDE_DIRS}
PRIVATE ${MKL_INCLUDE_DIRS}
PRIVATE ${BLAS_INCLUDE_DIRS})
找到了 MKL,但是 MKL_INCLUDE_DIRS 是空的。我如何才能正确获取 MKL 包含目录。
感谢 https://whosebug.com/users/3440745/tsyvarev 的提示,我明白了。
来自 oneapi 的 MKLConfig.cmake 不会创建 MKL_INCLUDE_DIRS,而是 MKL_INCLUDE.
也MKL::MKL而不是MKL_LIBRARIES
我正在尝试在 Eigen3 中编译一个支持 MKL 的程序。但是,我将 运行 保留为
/usr/include/eigen3/Eigen/src/Core/util/MKL_support.h:58:13: fatal error: 'mkl.h' file not found
我通过 oneapi 安装了 MKL,MKL_ROOT 被正确定义为环境变量。 mkl.h 在 /opt/intel/oneapi/mkl/latest/include
的系统上CMakeLists.txt 文件具有以下信息:
find_package(Eigen3 3.3 REQUIRED)
find_package(BLAS REQUIRED)
find_package(MKL REQUIRED)
set(BLA_VENDOR Intel10_64lp)
add_executable(${TARGET_NAME} ${SOURCE_FILES} ${INCLUDE_FILES})
target_sources(${TARGET_NAME}
PRIVATE main.cpp
test_mkl.cpp
)
add_definitions(-DEIGEN_USE_MKL_ALL)
target_link_libraries(${TARGET_NAME}
PRIVATE Eigen3::Eigen ${BLAS_LIBRARIES}
${MKL_LIBRARIES})
message("BLAS:")
message("${BLAS_INCLUDE_DIRS}")
if (MKL_FOUND)
message("MKL")
message("${MKL_INCLUDE_DIRS}")
endif()
target_include_directories(${TARGET_NAME}
PRIVATE ../../include
PRIVATE ${EIGEN3_INCLUDE_DIRS}
PRIVATE ${MKL_INCLUDE_DIRS}
PRIVATE ${BLAS_INCLUDE_DIRS})
找到了 MKL,但是 MKL_INCLUDE_DIRS 是空的。我如何才能正确获取 MKL 包含目录。
感谢 https://whosebug.com/users/3440745/tsyvarev 的提示,我明白了。
来自 oneapi 的MKLConfig.cmake 不会创建 MKL_INCLUDE_DIRS,而是 MKL_INCLUDE.
也MKL::MKL而不是MKL_LIBRARIES