Не удалось найти Eigen3 с CMake
Я в отчаянии:
Для моих исследований мне нужно работать с Eigen и CMake. Я могу использовать Eigen, если я копирую всю библиотеку в каталогах, где мой компилятор выглядит по умолчанию, но как только я пытаюсь найти его через find_package(Eigen3 REQUIRED)
Я получаю следующую ошибку:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
(Required is at least version "2.91.0")
Call Stack (most recent call first):
/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
FindEigen3.cmake:76 (find_package_handle_standard_args)
CMakeLists.txt:8 (find_package)
-- Configuring incomplete, errors occurred!
теперь я искал решения, но все, что я пробовал (также те, которые доступны на stackoverflow:
найти пакет Eigen3 для CMake
или
CMake не может найти Eigen3 )
не работать.
Моя собственная версия (согласно макросам в Core/util/Macros.h
) является 3.2.5.
Я держу каталог Eigen в /usr/local/include
, Я использую FindEigen3.cmake
который поставляется с библиотекой Eigen и my CMakeLists.txt
выглядит следующим образом:
cmake_minimum_required(VERSION 2.8)
project(Test)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
message("Found Eigen3 in: ${EIGEN3_INCLUDE_DIR}")
add_executable(main test.cpp)
кто-нибудь знает, что происходит не так?
С наилучшими пожеланиями, Жюльен!--10-->
2 ответов
превращая мой комментарий в ответ
найти пакет скриптов-как FindEigen3.cmake
- нормально использовать find_path()
команда для обнаружения каталога include пакета (см. это документация для полной информации).
FindEigen3.cmake
используется следующий фрагмент кода:
find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library PATHS ${CMAKE_INSTALL_PREFIX}/include ${KDE4_INCLUDE_DIR} PATH_SUFFIXES eigen3 eigen )
так это выглядит в CMAKE_INSTALL_PREFIX
который на хостах Unix/Linux является /usr/local
по умолчанию.
в для меня сработало следующее:
-
перейти к
Eigen
исходный каталог и запустите CMake и шаги установки> mkdir build > cd build > cmake .. > make install
тогда скопируйте - как вы сделали -
FindEigen3.cmake
в исходный каталог ваших проектов.-
теперь ваш код находит
Eigen
(только что изменено наlist(APPEND ...)
)list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") find_package(Eigen3 REQUIRED)
ссылки
добавить путь FindEigen3.cmake
до find_package(Eigen3 REQUIRED)
, например:
LIST(APPEND CMAKE_MODULE_PATH "/usr/share/cmake-2.8/Modules/")
find_package(Eigen3)