Мне нужно добавить Eigen в один из наших проектов. Поскольку Eigen содержит только заголовки, мы решили поместить его прямо в наш каталог исходного кода, чтобы отслеживать его с помощью Git и убедиться, что все готово, как только вы клонируете репозиторий. Поэтому мы скачали Eigen из здесь и поместили его в каталог EIGEN
внутри каталога нашего проекта.
Мы используем cmake
в этом проекте. Я могу включить Eigen, используя следующий код:
find_package(Eigen3 REQUIRED)
if (Eigen3_FOUND)
message("Eigen found")
message(" Eigen location: ${Eigen3_DIR}")
message(" Eigen Version: ${Eigen3_VERSION}")
target_link_libraries (ourProject Eigen3::Eigen)
endif ()
Однако этот код находит другую версию Eigen, расположенную в /usr/local/share/eigen3/cmake
.
Я хочу, чтобы он использовал версию Eigen, расположенную в каталоге исходного кода. Поэтому я попытался использовать вариант HINTS
:
find_package(Eigen3 REQUIRED HINTS ./EIGEN)
Но это не работает. Моя основная проблема в том, что я не знаю, какой путь я должен прописать в ПОДСКАЗКИ. Каталог EIGEN содержит несколько других папок. Я пробовал некоторые из них, но безуспешно:
find_package(Eigen3 REQUIRED HINTS ./EIGEN/Eigen)
find_package(Eigen3 REQUIRED HINTS ./EIGEN/Eigen/src)
find_package(Eigen3 REQUIRED HINTS ./EIGEN/cmake)...
Как правильно убедиться, что cmake использует нужную мне версию Eigen?
add_subdirectory()
, исходный код Eigen по существу будет частью вашего текущего проекта (и текущего вызова CMake), а на цели/переменные Eigen можно ссылаться напрямую. В таком случае вам вообще не понадобитсяfind_package()
, верно? 20.02.2020Eigen3::Eigen
будет добавлена независимо от того, звоните ли выfind_package()
или нет. Однако в несовременном CMake, где мы использовалиinclude_directories
с ‹package›_INCLUDE_DIR, это не будет работать, поскольку эта переменная не добавляется до тех пор, пока файл *Config.cmake не будет обработан из того, что я видел, поэтому далеко. Я отредактирую ответ. 20.02.2020add_subdirectoy()
, но это не сработало. Я попробовал это так:add_subdirectory(EIGEN/Eigen)
и получил следующее сообщение об ошибке: CMake Error at EIGEN/Eigen/CMakeLists.txt:1 (include): include не удалось найти файл загрузки: RegexUtils... 21.02.2020add_subdirectory()
, и содержит ли он каталог Eigen, содержащий файл CMakeLists.txt? Ознакомьтесь с документацией о рассматриваемой команде и моей последней редактировать, надеюсь, этого будет достаточно, чтобы вы начали. 21.02.2020