ubuntu16.04验证Pangolin安装成功

        最近在学slam,配环境属实令人头大,每个库安装半天,最后十四讲例程一看还是不能跑,不知道是库没安好还是因为版本不一致或者makefile没写好。

        所以最近安装后在找例程,先试试每个库是不是安装成功了。

        安装前面有:ubuntu16.04安装Pangolin库_浅梦语11的博客-CSDN博客

        验证用的是Pangolin自带的例程:Pangolin/examples/HelloPangolin文件夹

        1.终端进入对应文件夹:

cd Pangolin
cd examples/HelloPangolin

         2.编译运行一条龙:

cmake .
make
./HelloPangolin

 

        当然,这是理想情况。如果make环节遇到报错:

 

 /usr/local/include/pangolin/var/varextra.h:68:52:   required from here
/usr/local/include/pangolin/var/varvalue.h:100:23: error: ‘class pangolin::VarValue<bool>’ has no member named ‘str’
             this->str = (VarValueT<std::string>*)this;
                       ^
/usr/local/include/pangolin/var/varvalue.h:103:23: error: ‘class pangolin::VarValue<bool>’ has no member named ‘str’
             this->str = str_ptr;
                       ^
CMakeFiles/HelloPangolin.dir/build.make:75: recipe for target 'CMakeFiles/HelloPangolin.dir/main.o' failed
make[2]: *** [CMakeFiles/HelloPangolin.dir/main.o] Error 1
CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/HelloPangolin.dir/all' failed
make[1]: *** [CMakeFiles/HelloPangolin.dir/all] Error 2
Makefile:90: recipe for target 'all' failed
make: *** [all] Error 2


        这是CMakeLists.txt出问题了,主要是标准支持等问题,需要加上:

# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
   add_definitions(-DCOMPILEDWITHC11)
   message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
   add_definitions(-DCOMPILEDWITHC0X)
   message(STATUS "Using flag -std=c++0x.")
else()
   message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

        最后整个CMakeLists.txt应该是:

# Find Pangolin (https://github.com/stevenlovegrove/Pangolin)
find_package(Pangolin 0.4 REQUIRED)
include_directories(${Pangolin_INCLUDE_DIRS})

add_executable(HelloPangolin main.cpp)
target_link_libraries(HelloPangolin ${Pangolin_LIBRARIES})


# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
   add_definitions(-DCOMPILEDWITHC11)
   message(STATUS "Using flag -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
   add_definitions(-DCOMPILEDWITHC0X)
   message(STATUS "Using flag -std=c++0x.")
else()
   message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

        很多解决是单纯改set (CMAKE_CXX_STANDARD 11),但是一直不行,这个复杂点但是可以,不行就试试这个吧。

        结果为:

猜你喜欢

转载自blog.csdn.net/weixin_43907136/article/details/128065360
今日推荐