Как клонировать, собрать и связать каркас g2o в C ++ - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу использовать библиотеку 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?

...