I am Charmie

メモとログ

vcpkg: install c++ packages

vcpkgでインストールに成功・失敗したパッケージのまとめ

library version OS result
ceres 1.14.0-7 mac o
boost 1.73.0 mac x (boost-python)
g2o 2020-02-07 mac o
gtest 1.10.0 mac o

CMakeLists.txtでの設定についてはインストール後に表示されるメッセージに従う.

# このinclude()は必須かも
include(VCPKG_ROOT_DIRECTORY/scripts/buildsystems/vcpkg.cmake)

# ceres
  find_package(Ceres CONFIG REQUIRED)
  target_link_libraries(main PRIVATE ${CERES_LIBRARIES})

# g2o
    find_package(g2o CONFIG REQUIRED)
    # Note: 17 target(s) were omitted.
    target_link_libraries(main PRIVATE g2o::core g2o::stuff g2o::types_icp g2o::types_sba)

# gtest

    enable_testing()
    
    find_package(GTest CONFIG REQUIRED)
    target_link_libraries(main PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main)
    
    add_test(AllTestsInMain main)

memo

g2oのエラー

使い方が悪いのかもしれないけど,g2oを使おうとした時に気をつけなければイケない点

  • C++のバージョンを11 (か,それ以上)にしなければいけない
    • 幾つかのヘッダファイル中で右シフト演算子ではない >>が右シフト演算子として解釈される
    • constexpr が未定義になる
  • g2o, suitesparse関連のキャッシュ変数を自分で用意する必要あり
    • find_package()でg2oが見つかっても,include directoryやlibrary名がキャッシュ変数に登録されない
    • g2oとvcpkgのどちらに問題があるのか不明
# C++11を使用
set(CMAKE_CXX_STANDARD 11)
# SuiteSparseのインクルードディレクトリを設定
set(CSPARSE_INCLUDE_DIR "/VCPKG_ROOT_DIRECTORY/installed/x64-osx/include/suitesparse")
include_directories(${CSPARSE_INCLUDE_DIR})