半閒居士視覺SLAM十四講筆記(2)初識 SLAM- part 2 linux CMake、Kdevelop
阿新 • • 發佈:2019-01-02
該講詳細資料下載連結 【Baidu Yun】【Video】【Code】
若您覺得本博文對您有幫助,請支援高博的新書《視覺SLAM十四講》,【點選購買】
若您覺得本博文對您有幫助,請支援高博的新書《視覺SLAM十四講》,【點選購買】
若您覺得本博文對您有幫助,請支援高博的新書《視覺SLAM十四講》,【點選購買】
實踐:程式設計基礎
安裝 linux 系統
- 對於初學者,建議使用 Ubuntu 14.04
- Ubuntu 14.04.1 for ROS(indigo) by ExBot iso 發行版
- 特別注意:安裝後不能上網的,執行以下命令:
$ sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
- 不能掛載U盤的,試試以下命令:
$ sudo apt-get install exfat-utils
- 打不開優盤。出現:Unable to open a folder for KINGSTON,No application is registered as handling this file.You do not have the permissions necessary to view the contents of “KINGSTON”.
$ sudo chmod 655 /media/exbot
- 特別注意:安裝後不能上網的,執行以下命令:
- Ubuntu 14.04.1 for ROS(indigo) by ExBot iso 發行版
- 對於初學者,建議使用 Ubuntu 14.04
CMake 構建工程
- CMake 是一個跨平臺的軟體,在很多平臺可以使用。一般在 windows 下,我們會直接使用 VS 生成專案,在 linux 下面,我們也可以使用 QT Creater 生成專案,但是兩個不同平臺上面的專案不能相互移植。這就有了 CMake 的用武之地,我們可以先編寫一個 CMakeLists.txt 檔案,將需要的 .h 和 .cpp 檔案包含進來,然後在不同的平臺使用 CMake 呼叫各自的編譯器生成各自的工程。
- 在 linux 平臺下使用 CMake 生成 Makefile 並編譯的 流程:
- 編寫 CMakeLists.txt
- 執行命令“cmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目錄 )
- 使用 make 命令進行編譯
舉例說明:CMake 構建 HelloSlam 工程
- Ctrl + Alt + T 按鍵開啟終端
- 在選定路徑下建立工程資料夾:
$ mkdir HelloSlam
- 構建 HelloSlam 的檔案目錄結構
$ cd HelloSlam
$ mkdir bin build include lib src
- bin 用來存放編譯好的可執行二進位制檔案
- build 在該資料夾下執行 cmake ,這樣就不會汙染原始碼, 如果不想要這些自動生成的檔案,只要簡單的刪除 build 資料夾就可以
- include 用來放標頭檔案
- lib 用來放編譯好的庫檔案
- src 用來放原始碼
- 檔案目錄結構
檔案內容
src/main.cpp
#include <iostream> #include "CHello.h" int main(int argc,char** argv) { CHello myhello; myhello.print(); return 1; }
include/CHello.h
#ifndef HELLO_HEADER_H #define HELLO_HEADER_H class CHello { public: CHello(){} ~CHello(){} void print(); }; #endif
src/CHello.cpp
#include <iostream> #include "CHello.h" void CHello::print() { std::cout << "hello slam..." << std::endl; }
CMakeLists.txt
# 宣告要求的 cmake 最低版本 CMAKE_MINIMUM_REQUIRED(VERSION 2.8) # 宣告一個 cmake 工程 PROJECT(HELLOSLAM) # 設定編譯器 SET(CMAKE_CXX_COMPILER "g++") # 設定編譯模式 (Debug/Release) SET(CMAKE_BUILD_TYPE "Debug") # 顯示執行構建過程中詳細的編譯資訊 SET(CMAKE_VERBOSE_MAKEFILE on) # 指定可執行檔案目錄 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) # 指定庫檔案目錄 SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) # 指定標頭檔案目錄 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include) # 指定原始檔目錄 SET(SOURCE_DIR ${PROJECT_SOURCE_DIR}/src) # 增加一個可執行的二進位制檔案 ADD_EXECUTABLE(HelloSlam ${SOURCE_DIR}/main.cpp) # 生成庫檔案:libhello.so ADD_LIBRARY(hello SHARED ${SOURCE_DIR}/CHello.cpp) # 將庫檔案連結到可執行程式 TARGET_LINK_LIBRARIES(HelloSlam hello)
執行程式
$ cd build
$ cmake ..
$ make
$ ../bin/HelloSlam
終端輸出: hello slam…- 使用 Kdevelop 進行開發 [Kdevelop Download]
Kdevelop 優勢:
- 支援 CMake 工程
- 支援 C++,有高亮、跳轉、補全等功能
- 目錄樹瀏覽,方便查詢
- 一鍵編譯、斷點除錯
- 免費使用
- 匯入工程:工具欄 Project
⇒ Open/Import Project
- 工具欄 Run
⇒ Configure Launches,點選左側 + Add New …,設定 Executable(用 add_executable 指令構建的可執行程式),第二聯裡可以設定程式的執行引數和工作目錄,有時我們會給 main 函式進行傳參,如果沒有的話置空即可,對於工作目錄亦為如此,點選 OK 儲存配置結果。
- Debug 中放置斷點,游標移植程式碼號左邊位置,左擊滑鼠即可放置斷點(甲殼蟲斷點標誌)
- 接下來就可以進行工程的 Build , Execute, Debug
快捷鍵:
- F8: Build
- F10: Step Over
- F11: Step Into
- F12: Step Out