本系列文章由
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 不同版本的下载
-
-
双系统 Win7 + Ubuntu(
推荐
,方便使用外接实际的传感器,比如双目、Kinect等)
-
对于初学者,建议使用
-
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