半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 2 linux CMake、Kdevelop

  • Post author:
  • Post category:linux


本系列文章由

youngpan1101

出品,转载请注明出处。

文章链接:

http://blog.csdn.net/youngpan1101/article/details/71085778


作者:宋洋鹏(youngpan1101)

邮箱: yangpeng_song@163.com



-W350_2.gif

-2.gif

该讲详细资料下载链接 【

Baidu Yun

】【

Video

】【

Code

若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【

点击购买



若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【

点击购买



若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【

点击购买


实践:编程基础

  1. 安装 linux 系统

  2. CMake 构建工程

    • CMake 是一个跨平台的软件,在很多平台可以使用。一般在 windows 下,我们会直接使用 VS 生成项目,在 linux 下面,我们也可以使用 QT Creater 生成项目,但是两个不同平台上面的项目不能相互移植。这就有了 CMake 的用武之地,我们可以先编写一个 CMakeLists.txt 文件,将需要的 .h 和 .cpp 文件包含进来,然后在不同的平台使用 CMake 调用各自的编译器生成各自的工程。
    • 在 linux 平台下使用 CMake 生成 Makefile 并编译的

      流程


      1. 编写 CMakeLists.txt
      2. 执行命令“cmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )
      3. 使用 make 命令进行编译
    • CMake 入门资料

    • 举例说明:CMake 构建 HelloSlam 工程

      1. Ctrl + Alt + T 按键打开终端
      2. 在选定路径下建立工程文件夹:


        $ mkdir HelloSlam
      3. 构建 HelloSlam 的文件目录结构


        $ cd HelloSlam



        $ mkdir bin build include lib src


        • bin






















          用来存放编译好的可执行二进制文件

        • build

          在该文件夹下运行 cmake ,这样就不会污染源代码, 如果不想要这些自动生成的文件,只要简单的删除 build 文件夹就可以

        • include

          用来放头文件

        • lib






























          用来放编译好的库文件

        • src




























          用来放源代码
      4. 文件目录结构

        HelloSlam_01.png
      5. 文件内容

        • 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)   
      6. 运行程序


        $ cd build



        $ cmake ..



        $ make



        $ ../bin/HelloSlam


        终端输出: hello slam…

      7. 使用 Kdevelop 进行开发 [

        Kdevelop Download

        ]

        Kdevelop 优势:

        • 支持 CMake 工程
        • 支持 C++,有高亮、跳转、补全等功能
        • 目录树浏览,方便查找
        • 一键编译、断点调试
        • 免费使用
      8. 导入工程:工具栏

        Project






















        Open/Import Project


        HelloSlam_Kdevelop_02.png

        HelloSlam_Kdevelop_03.png
      9. 工具栏

        Run






















        Configure Launches

        ,点击左侧

        + Add New …

        ,设定

        Executable

        (用

        add_executable

        指令构建的可执行程序),第二联里可以设置程序的运行参数和工作目录,有时我们会给

        main

        函数进行传参,如果没有的话置空即可,对于工作目录亦为如此,点击

        OK

        保存配置结果。

        HelloSlam_Kdevelop_05.png
      10. Debug 中放置断点,光标移植代码号左边位置,左击鼠标即可放置断点(甲壳虫断点标志)

        HelloSlam_Kdevelop_07.png
      11. 接下来就可以进行工程的

        Build

        ,

        Execute

        ,

        Debug


        HelloSlam_Kdevelop_08.png

        快捷键:

        • F8: Build
        • F10: Step Over
        • F11: Step Into
        • F12: Step Out



版权声明:本文为youngpan1101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。