解决hdl_graph_slam编译中遇到的/usr/local/include/g2o/core/matrix_structure.h:57:19: error: ‘std::string_view’ has not been declared问题
问题描述
最近在编译hdl_graph_slam时遇到如下报错:
/usr/local/include/g2o/core/matrix_structure.h:57:19: error: ‘std::string_view’ has not been declared
问题定位
代码指向g2o库的某个头文件,经查证,g2o是基于C++17的标准进行编译的,所以依赖它的库也需要基于该标准,才能顺利编译。
解决方法
修改CMakeLists.txt的编译标准,具体来说就是在该文件中以下代码后,
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
add_definitions(-std=c++11)
set(CMAKE_CXX_FLAGS "-std=c++11")
else()
add_definitions(-std=c++14 -msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2)
set(CMAKE_CXX_FLAGS "-std=c++14 -msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2")
endif()
添加以下两行代码:
add_definitions(-std=c++17)
set(CMAKE_CXX_FLAGS "-std=c++17")
重新编译,问题解决!