Я хочу использовать библиотеку g2o в своем проекте C++11 в Ubuntu 18.04, но не могу заставить работать сборку. У меня есть все зависимости. Но я не могу связать библиотеку g2o со своим проектом через CMakeLists.txt
Я новичок в зависимостях C++.
Я попытался клонировать репозиторий https://github.com/RainerKuemmerle/g2o и создать его с помощью cmake. .
Структура следующая:
MY_PROJECT
|__ cmake_modules
|__ project_src
|__ CMakeLists.txt
|__ Thirdparty
|____ g2o
|____ bin
|____ build
|____ cmake_modules # findG2O.cmake
|____ lib # .so shared libraries (all of them, like 20)
|____ g2o
|____ core # headers and source files
|____ solvers
|____ types
|____ CMakeLists.txt
Я добавил cmake_modules изнутри g2o в CMakeLists.txt my_project, а затем попытался найти его с помощью find_package, но он не найден.
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/g2o/cmake_modules)
find_package(G2O REQUIRED)
if(NOT G2O_FOUND)
message(FATAL_ERROR "G2O not found.")
endif()
Я оставил findG2O.cmake нетронутым, так как он находится в https://github.com/RainerKuemmerle/g2o/blob/master/cmake_modules/FindG2O.cmake
Должен ли я изменить findG2O.cmake? Я не очень понимаю, что происходит. Как мне приступить к построению из исходного кода и связыванию?
Я не нашел точного ответа на свою проблему нигде в StackOverflow, но, возможно, я просто не знал, что искал.
Сообщение об ошибке:
/home/miki/ORB_SLAM2/Thirdparty/g2o/g2o/types/sim3/types_seven_dof_expmap.h:29:10: fatal error: g2o/config.h: No such file or directory #include "g2o/config.h"
Когда я попытался изменить на #include "../../config.h", это сработало. Как я могу решить эту проблему в CMakeLists, чтобы мне не приходилось менять все включения в сторонней библиотеке?