Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Clion CMake中包含特征库的问题_C++_Linux_Cmake_Eigen - Fatal编程技术网

C++ Clion CMake中包含特征库的问题

C++ Clion CMake中包含特征库的问题,c++,linux,cmake,eigen,C++,Linux,Cmake,Eigen,我对Eigen库有问题。我在Linux上使用Clion,我的项目找不到Eigen库(我把它放在桌面上的一个文件夹中) 我有两种配置的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(T

我对Eigen库有问题。我在Linux上使用Clion,我的项目找不到Eigen库(我把它放在桌面上的一个文件夹中)

我有两种配置的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

如何修复它?

首先,尝试使用到Eigen目录的完整路径(不带
~

此外,请检查以确保路径实际上包含
本征/稠密
,因此完整文件路径应为:

/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})
但是,通过使用验证您是否位于Eigen存储库中的正确位置,您可以更加安全。Eigen存储库中有一个虚拟文件<代码>eigen3\u矩阵库的签名,您可以使用它来验证是否确实找到了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})
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})