首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clion中包含特征库的问题

Clion中包含特征库的问题
EN

Stack Overflow用户
提问于 2020-01-17 20:46:27
回答 1查看 987关注 0票数 2

我对艾根图书馆有意见。我在Linux上使用Clion,我的项目找不到特征库(我把它放在桌面上的一个文件夹中)。

我有两种配置的CMake:

第一:

代码语言:javascript
复制
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)

第二:

代码语言:javascript
复制
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)

一直以来,我都有这样的错误:

代码语言:javascript
复制
fatal error: Eigen\Dense: No such file or directory

我怎么才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 21:12:04

首先,尝试使用到特征目录的完全路径(没有~)。

代码语言:javascript
复制
set(EIGEN_DIR "/home/xxxx/Desktop/eigen-3.3.7")
include_directories(${EIGEN_DIR})

此外,检查以确保path实际包含Eigen/Dense,因此完整的文件路径是:

代码语言:javascript
复制
/home/xxxx/Desktop/eigen-3.3.7/Eigen/Dense

更好的方法是在使用路径之前使用CMake来验证是否存在路径:

代码语言:javascript
复制
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在哪里查找:

代码语言:javascript
复制
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})
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59794643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档