SLAM中常用庫的CMake寫法(如何添加各種依賴庫)_庫

來源:互聯網
上載者:User

之前LZ寫過一個SLAM依賴庫安裝大全,如果按照之前大全安裝的方式進行安裝,後續在編譯自己的工程時需要連結各種庫檔案和標頭檔,但是具體在CMakeLists.txt裡怎麼使用呢。這篇部落格就準備匯總各種SLAM常用庫的連結方法。

1.添加Eigen標頭檔

Eigen通過apt-get安裝之後,我們要怎麼使用這個依賴庫呢。Eigen有一點很奇怪,Eigen庫只有標頭檔,所以我們在CMakeLists.txt中是不需要寫target_link_libraries,因為我們是通過apt安裝的,所以很容易的知道Eigen庫的位置就是在/usr/include/eigen3

#添加標頭檔include_directories("/usr/include/eigen3")

因為我們已經知道Eigen具體的位置,就不用使用find_package來尋找了,雖然有些粗暴,但是簡單有效。

2.添加Pangolin依賴
Pangolin的安裝也很簡單,功能主要就是做三維的可視化顯示,主要依賴庫是OpenGL,通過apt也很好安裝。

find_package(Pangolin)include_directories(${Pangolin_INCLUDE_DIRS})add_executable(project_name filename.cpp)target_link_libraries(project_name ${Pangolin_LIBRARIES})

3.添加Sophus依賴

Sophus實際上是Eigen庫的擴充模組,Eigen中雖然有幾何模組,但是沒有提供李代數的支援,所以Sophus算是一個比較好的李代數庫,安裝參考之前博文。

find_package(Sophus REQUIRED)include_directories(${Sophus_INCLUDE_DIRS})add_executable(project_name project_name.cpp)target_link_libraries(project_name ${Sophus_LIBRARIES})

4.添加OpenCV依賴
OpenCV經常會出現版本不相容的問題,LZ同時安裝了OpenCV2和OpenCV3兩個版本,所以在CMakeLists.txt要指定OpenCV的版本。

#指定OpenCV的版本是3.1find_package(OpenCV 3.1 REQUIRED)include_directories(${OpenCV_INCLUDE_DIRS})add_executable(project_name filename.cpp)target_link_libraries(project_name ${OpenCV_LIBS})

添加OpenCV要注意一個問題,大小寫。很重要。大小寫。

5.添加PCL依賴

這個點雲庫在SLAM應用中還是蠻重要的,通常情況下好像也都有安裝,安裝很簡單,這裡還是講一下CMakeLists.txt中怎麼寫:

find_package(PCL REQUIRED COMPONENT common io)include_directories(${PCL_INCLUDE_DIRS})add_definitions(${PCL_DEFINITIONS})target_link_libraries(project_name ${PCL_LIBRARIES})

6.添加Ceres依賴

Ceres是Google出品的一個最佳化庫,安裝編譯都在LZ之前寫過一個SLAM安裝大全裡都有。因為Ceres不是常用的庫,所以需要添加一個cmake_modules。LZ這裡把對應的cmake_modules檔案夾中的檔案分享給小夥伴,有需要的可以自行下載。連結: http://pan.baidu.com/s/1o8dTy8i 密碼: zmiv

#這行代碼就是添加尋找Ceres的一個檔案list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)find_package(Ceres REQUIRED)include_directories(${CERES_INCLUDE_DIRS})target_link_libraries(project_name ${CERES_LIBRARIES})

7添加G2O的依賴

其實這個也是千篇一律,換湯不換藥。這裡也是要注意幾個問題,第一個,要在cmake_module中假如findG2O的檔案,連結: http://pan.baidu.com/s/1kVp4Ul5 密碼: yeu4,又需要的小夥伴可以自行下載。第二個,注意大小寫問題,還有數字0和字母0,這個還是要注意的。

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)find_package(G2O REQUIRED)include_directories(${G20_INCLUDE_DIRS})target_link_libraries(project_name g2o_core g2o_stuff)

SLAM的相關依賴庫有很多,而且針對不同的代碼使用的依賴庫是不一樣的,所以,用到一種,LZ也會更新一種,本篇部落格未完待續啦。。。O(∩_∩)O

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.