Clion CMake中包含特征库的问题

问题描述 投票:1回答:1

我的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

我该如何解决?

c++ linux cmake eigen
1个回答
2
投票

首先,尝试使用Eigen目录的full路径(无~)。

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在使用之前先verify该路径存在:

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存储库中的正确位置内,可以更加安全。 Eigen存储库中有一个虚拟文件find_path(),可用于验证您确实找到了Eigen的顶级目录。只需使用signature_of_eigen3_matrix_library子句告诉CMake看哪里:PATHS

© www.soinside.com 2019 - 2024. All rights reserved.