Pangolin 是一个可用于SLAM可视化的openGL库。目前有很多SLAM系统都用它作为可视化的工具。它的编译与安装过程问题不大,依赖也比较少。但最近我在单独使用它的时候,碰到了很奇怪的现象:我单独将HelloPangolin这个example以及它的CMakelists.txt取出来,通过cmake,build的方式去编译,报了一堆错:

In file included from /home/lenovo/Pangolin/include/pangolin/var/var.h:34:0,
from /home/lenovo/Pangolin/include/pangolin/var/varextra.h:31,
from /home/lenovo/Pangolin/include/pangolin/pangolin.h:52,
from /home/lenovo/expangolin/main.cpp:1:
/home/lenovo/Pangolin/include/pangolin/var/varvalue.h: In instantiation of ‘void pangolin::VarValue::Init() [with T = bool]’:
/home/lenovo/Pangolin/include/pangolin/var/varvalue.h:55:14: required from ‘pangolin::VarValue::VarValue(const T&) [with T = bool]’
/home/lenovo/Pangolin/include/pangolin/var/var.h:170:20: required from ‘pangolin::Var::Var(const string&, const T&, bool) [with T = bool; std::string = std::basic_string]’
/home/lenovo/Pangolin/include/pangolin/var/varextra.h:67:52: required from here
/home/lenovo/Pangolin/include/pangolin/var/varvalue.h:99:23: error: ‘class pangolin::VarValue’ has no member named ‘str’
this->str = (VarValueTstd::string*)this;
^
/home/lenovo/Pangolin/include/pangolin/var/varvalue.h:102:23: error: ‘class pangolin::VarValue’ has no member named ‘str’
this->str = str_ptr;

  出现这种错误,意味着Pangolin库的路径是能够被找到的,但通过这个库编译example的时候,出现了问题。这个问题困扰了很久,最终我通过对比ORB-SLAM2中的CMakeLists.txt才发现,需要通过CMake加上C++11 或者C++0x的support,最终编译pangolin的example的CMakeLists.txt 如下:

cmake_minimum_required(VERSION 2.8)
project(HelloPangolin) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native") # 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() find_package(Pangolin REQUIRED) include_directories(${Pangolin_INCLUDE_DIRS}) # Build examples
add_executable(test main.cpp)
target_link_libraries(test ${Pangolin_LIBRARIES})

CMakeLists.txt

Pangolin的使用的更多相关文章

  1. HOWTO install Oracle 11g on Ubuntu Linux 12.04 (Precise Pangolin) 64bits

    安装了Ubuntu 12.04 64bit, 想在上面安装Oracle 11gr2,网上找了好多文档都没成功,最后完全参考了MordicusEtCubitus的文章. 成功安装的关键点:install ...

  2. 最近新版本的pangolin出现了点问题,我把可用的旧版本上传到了github

    经测试该版本编译没有问题. 下载地址:https://github.com/zzx2GH/Pangolin.git

  3. ORB_SLAM2之Pangolin的安装与问题处理

    前言 本篇博客中,我们主要介绍了在安装ORB_SLAM2所需的第三方库Pangolin的过程中遇到的一些问题及解决方法. 1.Pangolin是什么? Pangolin是一个用于OpenGL显示/交互 ...

  4. Pangolin学习

    0.1. 资料 0.2. 使用说明 0.3. HelloPangolin 0.4. Plot data with ros 0.1. 资料 泡泡机器人 github example opengl中摄像机 ...

  5. 安装Pangolin

    Pangolin是一个用于OpenGL显示/交互以及视频输出的一个轻量级 快速开发库 一:安装必要的库 1.Glew sudo apt-get install libglew-dev 2.Cmake ...

  6. ubuntu 安装Pangolin 过程

    Pangolin 是一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/zzx2GH/Pangolin.git ...

  7. ubuntu16.04下安装pangolin

    安装教程,具体可以参考github上pangolin的安装文档 https://github.com/stevenlovegrove/Pangolin 首先要安装pangolin的各种依赖项 Glew ...

  8. Pangolin库的使用

    使用Pangolin画出相机的轨迹(包括朝向). 数据集结构data.csv: #timestamp, p_RS_R_x [m], p_RS_R_y [m], p_RS_R_z [m], q_RS_w ...

  9. 第三方库的安装:Pangolin

    Pangolin: 一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/stevenlovegrove/Pang ...

随机推荐

  1. mysql5.7创建账户并授权

    CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; GRANT ALL ON db1.* TO 'jeffrey'@'localhost ...

  2. 谈谈如何从Apache官网扒文档

    学习java的猴子至少要会看文档, 一.从Apache官网下载文档 进入官网--components--例如点击FileUpload--点击最下面browser download area--点击bi ...

  3. Web开发者应当开始学习HTML5的新功能

    据国外媒体报道,谷歌开发者业务部门高管马克·皮尔格雷姆(Mark Pilgrim)在WWW2010会议上表示,尽管还需要进一步完善,HTML5已经获得大多数平台支持,适合完成大多数任务. 但并非所有人 ...

  4. iOS 按钮设置图片和事件

    [btn addTarget:self action:@selector(searchButtonClick) forControlEvents:UIControlEventTouchUpInside ...

  5. Java 读写Properties配置文件

    Java 读写Properties配置文件 JAVA操作properties文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了M ...

  6. ExtJs 中的ext.date

    获取当前日期直接用NEW date() Ext.Date英文API http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Date Ext.Date是一个单例类,封 ...

  7. Java Web快速入门——全十讲

    Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲 ...

  8. HTML 布局

    网站布局 大多数网站会把内容安排到多个列中(就像杂志或报纸那样). 大多数网站可以使用 <div> 或者 <table> 元素来创建多列.CSS 用于对元素进行定位,或者为页面 ...

  9. mybatis判断集合为空或者元素个数为零

    mybatis判断集合为空或者元素个数为零: <if test="mlhs != null and mlhs.size() != 0"> and t.mlh_name ...

  10. NodeJS的Cluster模块使用

    一.前言大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU实现并行. 随着n ...