Ubuntu16.04 は Pangolin が正常にインストールされていることを確認します

        最近 Slam を勉強しているのですが、環境設定が本当にめんどくさいです。各ライブラリのインストールに半日かかります。最後の 14 回の講義ではまだルーチンを実行できません。ライブラリがインストールされていないのかわかりません。正しくない、またはバージョンが一貫していない、またはメイクファイルが正しく書かれていないためです。

        そこで、最近インストールしたルーチンを探していたのですが、まず各ライブラリが正常にインストールされたかどうかを確認してみました。

        インストールの前に、次の作業があります。ubuntu16.04 に Pangolin ライブラリをインストールする_Qianmengyu 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: ここから必要です
/usr/local/include/pangolin/var/varvalue.h:100:23: エラー: 'class pangolin::VarValue< bool>' には 'str' という名前のメンバーがありません
             this->str = (VarValueT<std::string>*)this;
                       ^
/usr/local/include/pangolin/var/varvalue.h:103:23: エラー: 'class pangolin::VarValue<bool>' には 'str' という名前のメンバーがありません
             this->str = str_ptr;
                       ^
CMakeFiles/HelloPangolin.dir/build.make:75: ターゲット 'CMakeFiles/HelloPangolin.dir/main.o' のレシピが
make[2] に失敗しました: *** [CMakeFiles/HelloPangolin.dir/main.o] エラー 1
CMakeFiles /Makefile2:82: ターゲット 'CMakeFiles/HelloPangolin.dir/all' のレシピが失敗しました
make[1]: *** [CMakeFiles/HelloPangolin.dir/all] エラー 2
Makefile:90: ターゲット 'all' のレシピが失敗しました
make: *** [all] エラー 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()

        多くの解決策は、単にセット (CMAKE_CXX_STANDARD 11) を変更することですが、これまでうまくいきませんでした。これは少し複雑ですが、実行できます。うまくいかない場合は、これを試してください。

        結果は次のとおりです。

おすすめ

転載: blog.csdn.net/weixin_43907136/article/details/128065360