c++ - 在 Clion 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(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 目录的完整路径(不带~
)。
set(EIGEN_DIR "/home/xxxx/Desktop/eigen-3.3.7")
include_directories(${EIGEN_DIR})
另外,检查以确保路径实际上包含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()
. Eigen 存储库有一个虚拟文件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})
推荐阅读
- java - 给定 curl 代码的 Java 等效 HTTP post 方法
- julia - 使用 Gadfly 绘制多个数据文件
- kotlin - 期望在 Getter 中声明成员
- python - 将 docker 用于 Celery Task +Rabbitmq 不适用于 python 3.7
- c# - linq中按时间顺序排序的日期时间
- here-api - 离线使用 SDK 时出错:calculateRoute 返回 GRAPH_DISCONNECTED
- hyperledger-fabric - 无法在 Mac OS 上启动 Fabric,startFabric.sh 给出守护程序错误
- mysql - 是否可以获得我们正在删除的特定列值
- angular - Angular 应用程序中 Font Awesome 字体的 CORS 错误
- node.js - 试图填充每个聊天室的每个所有者