Ubuntu16.04 verifica que Pangolin esté instalado correctamente

        Estoy aprendiendo Slam recientemente y configurar el entorno es realmente un dolor de cabeza. Se necesita medio día para instalar cada biblioteca. En las últimas catorce conferencias, las rutinas todavía no se pueden ejecutar. No sé si la biblioteca no está instalada. correctamente o porque la versión es inconsistente o el archivo MAKE no está escrito correctamente.

        Así que estaba buscando rutinas después de la instalación reciente. Primero, intenté ver si cada biblioteca se instaló correctamente.

        Antes de la instalación, hay: Instalación de la biblioteca Pangolin en el blog-CSDN de ubuntu16.04_Qianmengyu 11

        La verificación utiliza la rutina propia de Pangolin: carpeta Pangolin/examples/HelloPangolin

        1. Ingrese a la carpeta correspondiente en el terminal:

cd Pangolin
cd examples/HelloPangolin

         2. Compilación y operación integrales:

cmake .
make
./HelloPangolin

 

        Por supuesto, esta es la situación ideal. Si encuentra un error durante el proceso de creación:

 

 /usr/local/include/pangolin/var/varextra.h:68:52: requerido desde aquí
/usr/local/include/pangolin/var/varvalue.h:100:23: error: 'clase pangolin::VarValue< bool>' no tiene ningún miembro llamado 'str'
             this->str = (VarValueT<std::string>*)this;
                       ^
/usr/local/include/pangolin/var/varvalue.h:103:23: error: 'class pangolin::VarValue<bool>' no tiene ningún miembro llamado 'str'
             this->str = str_ptr;
                       ^
CMakeFiles/HelloPangolin.dir/build.make:75: receta para el objetivo 'CMakeFiles/HelloPangolin.dir/main.o' falló
make[2]: *** [CMakeFiles/HelloPangolin.dir/main.o] Error 1
CMakeFiles /Makefile2:82: la receta para el objetivo 'CMakeFiles/HelloPangolin.dir/all' falló
make[1]: *** [CMakeFiles/HelloPangolin.dir/all] Error 2
Makefile:90: la receta para el objetivo 'todos' falló
make: *** [all] Error 2


        Este es un problema con CMakeLists.txt, principalmente relacionado con el soporte estándar y otros problemas. Es necesario agregar:

# 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()

        Finalmente, todo el CMakeLists.txt debería ser:

# 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()

        Muchas soluciones son simplemente cambiar el conjunto (CMAKE_CXX_STANDARD 11), pero nunca ha funcionado. Esto es un poco complicado, pero se puede hacer. Si no funciona, prueba esto.

        El resultado es:

Supongo que te gusta

Origin blog.csdn.net/weixin_43907136/article/details/128065360
Recomendado
Clasificación