Я хочу использовать библиотеку 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, чтобы мне не приходилось менять все включения в библиотеке ThirdParty?