本系列文章由 youngpan1101 出品,转载请注明出处。
文章链接: http://blog.csdn.net/youngpan1101/article/details/71085778
作者:宋洋鹏(youngpan1101)
邮箱: yangpeng_song@163.com
该讲详细资料下载链接 【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 不同版本的下载
- Ubuntu 14.04.1 for ROS(indigo) by ExBot iso 发行版
- 双系统 Win7 + Ubuntu(推荐,方便使用外接实际的传感器,比如双目、Kinect等)
- 对于初学者,建议使用 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 入门资料
举例说明: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