我对艾根图书馆有意见。我在Linux上使用Clion,我的项目找不到特征库(我把它放在桌面上的一个文件夹中)。
我有两种配置的CMake:
第一:
cmake_minimum_required(VERSION 3.15)
project(TestFEM)
set(CMAKE_CXX_STANDARD 17)
set(EIGEN_DIR "~/Desktop/eigen-3.3.7")
include_directories(${EIGEN_DIR})
add_executable(TestFEM main.cpp FEM/FEM.cpp FEM/FEM.h)第二:
cmake_minimum_required(VERSION 3.15)
project(TestFEM)
set(CMAKE_CXX_STANDARD 17)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
add_executable(TestFEM main.cpp FEM/FEM.cpp FEM/FEM.h)一直以来,我都有这样的错误:
fatal error: Eigen\Dense: No such file or directory我怎么才能修好它?
发布于 2020-01-17 21:12:04
首先,尝试使用到特征目录的完全路径(没有~)。
set(EIGEN_DIR "/home/xxxx/Desktop/eigen-3.3.7")
include_directories(${EIGEN_DIR})此外,检查以确保path实际包含Eigen/Dense,因此完整的文件路径是:
/home/xxxx/Desktop/eigen-3.3.7/Eigen/Dense更好的方法是在使用路径之前使用CMake来验证是否存在路径:
set(EIGEN_DIR "/home/xxxx/Desktop/eigen-3.3.7")
if(NOT EXISTS ${EIGEN_DIR})
message(FATAL_ERROR "Please check that the set Eigen directory is valid!")
endif()
include_directories(${EIGEN_DIR})但是,通过使用find_path()验证您在特征存储库中的正确位置,您甚至可以更加安全。特征存储库有一个虚拟文件signature_of_eigen3_matrix_library,您可以使用它来验证您确实找到了Eigen的顶级目录。只需使用PATHS子句告诉CMake在哪里查找:
find_path(EIGEN_DIR NAMES signature_of_eigen3_matrix_library
PATHS
/home/xxxx/Desktop/eigen-3.3.7
PATH_SUFFIXES eigen3 eigen
)
include_directories(${EIGEN_DIR})https://stackoverflow.com/questions/59794643
复制相似问题