cartographer 编译时不想下载Abseil的替代方法

cartographer新版本要先安装abseil,这里记录一个安装abseil的问题:

/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \

解决方法网址:https://www.jianshu.com/p/08fdf54fbf43
在absl文件夹里的CmakeList.txt里面添加 set(CMAKE_CXX_FLAGS “-std=c++11”),即可。记得动态库都要编译安装,不然cartographer_ros会报错。

以下是旧版本的cartographer:

原理阐述:下载github上的abseil,然后单独编译这个库,然后更改部分cartographer和cartographer_ros的代码即可。

详细步骤:

一:下载abseil

网址:https://github.com/abseil/abseil-cpp.

安装abseil的静态库:
  1. mkdir build && cd build
  2. cmake …
  3. make
  4. sudo make install
安装abseil的动态库:可以将之前的build文件删掉,重新建立
  1. mkdir build && cd build
  2. cmake … -DBUILD_SHARED_LIBS=ON
  3. make
  4. sudo make install

二:更改cartographer的CMakeList.txt文件(有2处)和cartographer-config.cmake.in文件(有1处)

CMakeList.txt 第1处:

find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)

CMakeList.txt 第2处:#默认的库文件是 standalone_absl

target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::base
absl::synchronization
absl::strings
absl::flat_hash_map
absl::numeric
absl::flags)
然后重新编译即可

cartographer-config.cmake.in 1处:

find_package(Abseil ${QUIET_OR_REQUIRED_OPTION}) Abseil 改为 absl

三:更改cartographer_ros的CMakeList.txt,有2处

如下:
cartographer_ros 和 cartographer_rviz的改法均一致:
find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
然后重新编译即可。
本实验经过验证,可行通过

欢迎大家交流技术上的问题:QQ:136841924

你可能感兴趣的:(2d_slam,linux,cmake)