Ubuntu16.04 verifica se o Pangolin foi instalado com sucesso

        Estou aprendendo Slam recentemente e configurar o ambiente é realmente uma dor de cabeça. Demora meio dia para instalar cada biblioteca. Nas últimas quatorze aulas as rotinas ainda não podem ser executadas. Não sei se a biblioteca não está instalada corretamente ou porque a versão é inconsistente ou o makefile não está escrito corretamente.

        Então, eu estava procurando rotinas após a instalação recente. Primeiro tentei ver se cada biblioteca foi instalada com sucesso.

        Antes da instalação, existem: Instalando a biblioteca Pangolin no blog ubuntu16.04_Qianmengyu 11-blog CSDN

        A verificação usa a rotina própria do Pangolin: pasta Pangolin/examples/HelloPangolin

        1. Entre na pasta correspondente no terminal:

cd Pangolin
cd examples/HelloPangolin

         2. Compilação e operação completas:

cmake .
make
./HelloPangolin

 

        Claro, esta é a situação ideal. Se você encontrar um erro durante o processo de criação:

 

 /usr/local/include/pangolin/var/varextra.h:68:52: necessário daqui
/usr/local/include/pangolin/var/varvalue.h:100:23: erro: 'class pangolin::VarValue< bool>' não tem nenhum membro chamado 'str'
             this->str = (VarValueT<std::string>*)this;
                       ^
/usr/local/include/pangolin/var/varvalue.h:103:23: erro: 'class pangolin::VarValue<bool>' não tem membro chamado 'str'
             this->str = str_ptr;
                       ^
CMakeFiles/HelloPangolin.dir/build.make:75: receita para o destino 'CMakeFiles/HelloPangolin.dir/main.o' falhou
make[2]: *** [CMakeFiles/HelloPangolin.dir/main.o] Erro 1
CMakeFiles /Makefile2:82: receita para o destino 'CMakeFiles/HelloPangolin.dir/all' falhou
make[1]: *** [CMakeFiles/HelloPangolin.dir/all] Erro 2
Makefile:90: receita para o destino 'all' falhou
make: *** [all] Erro 2


        Este é um problema com CMakeLists.txt, relacionado principalmente ao suporte padrão e outros problemas. Você precisa adicionar:

# 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 o CMakeLists.txt deve 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()

        Muitas soluções são simplesmente mudar o conjunto (CMAKE_CXX_STANDARD 11), mas nunca funcionou. Isso é um pouco complicado, mas pode ser feito. Se não funcionar, tente isso.

        O resultado é:

Acho que você gosta

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