CMake не может найти собственный 3

#cmake #eigen

#cmake #eigen

Вопрос:

Я скопировал файл FindEigen3.cmake в свой исходный каталог.

Затем я добавил:

 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR})
  

к моему CMakeLists.txt чтобы указать CMake использовать этот файл .cmake.

Тогда в моем CMakeLists.txt Я делаю:

 FIND_PACKAGE(Eigen3)
  

У меня для переменной среды EIGEN3_INCLUDE_DIR установлено значение /home/doriad/src/eigen

Когда я запускаю CMake, я получаю:

 -- Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) (Required is at least version "2.91.0")
  

Это свежий клон от Mercurial, поэтому версия должна быть не менее 3.

Есть предложения?

Если я НЕПРАВИЛЬНО задаю путь к модулю, я получаю некоторые подсказки:

 Adjust CMAKE_MODULE_PATH to find FindEigen3.cmake or set Eigen3_DIR to the
directory containing a CMake configuration file for Eigen3. The file will
have one of the following names:

Eigen3Config.cmake
eigen3-config.cmake
  

Однако я не нашел ни одного из этих файлов ни в исходном каталоге, ни в каталоге сборки Eigen3. Я попытался установить Eigen3_DIR=/home/doriad/src /собственный файл, но это тоже не сработало.

Мысли?

Спасибо,

Дэвид

Комментарии:

1. не могли бы вы найти решение? Я все еще не могу решить эту проблему, и это странно, потому что я использую любую другую библиотеку, такую как opencv, matlab, boost

2. Откуда вы взяли файл FindEigen3.cmake?

Ответ №1:

У меня это сработало, когда я установил пакет eigen3 (например, используя -DCMAKE_INSTALL_PREFIX=/home/doriad/install), а также установил переменную CMAKE_INSTALL_PREFIX пакета cmake, который использует eigen3, в тот же каталог.

Из-за проблем с findscripts я фактически начал использовать вместо этого pkg-config. Для этого вам необходимо включить поддержку pkg-config в eigen3 cmake и использовать макрос pkg-config в вашем собственном скрипте cmake. Преимущество в том, что вам больше не нужно устанавливать какие-либо переменные среды.

 find_package( PkgConfig )
pkg_check_modules( EIGEN3 REQUIRED eigen3 )
include_directories( ${EIGEN3_INCLUDE_DIRS} )
  

Комментарии:

1. Не могли бы вы привести пример того, как использовать pkg-config в файле cmake для этой цели?

2. да, как вы установили пакет eigen3?