我想在我的Ubuntu18.04上的C++11项目中使用g2o库,但我无法使构建工作。我有所有的依赖项。但是我无法通过CMakeLists.txt将g2o库链接到我的项目
我是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
我将来自g2o内部的cmake_modules添加到my_project的CMakeLists.txt中,然后尝试使用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()
我保留了https://github.com/RainerKuemmerle/g2o/blob/master/cmake_modules/FindG2O.cmake中的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库中的所有包含?
发布于 2020-08-24 22:17:42
config.h是在执行命令后生成的
cmake ..
在文件夹中
MY_PROJECT/Thirdparty/g2o/build
,并且这个文件包含一些信息,比如您尝试使用的浮点数或库的类型。我认为这些信息将被用来自动修改一些代码块。
默认情况下,文件config.h的位置在文件夹中
MY_PROJECT/Thirdparty/g2o/build/g2o
或者您也可以使用以下命令
make install
将此文件复制到安装路径。
如果您的${CMAKE_PREFIX_INTALL}为/home/user/,则文件config.h的位置在文件夹中
/home/user/include/g2o
如果您想使用find_package查找g2o库,那么您需要编写
set (G2O_ROOT /home/user)
在find_package之前。
最后,将头路径添加到CMakeLists.txt中,如
include_directories(${G2O_INCLUDE_DIR}
https://stackoverflow.com/questions/58680427
复制相似问题