二、编程及编译工具CMake

SLAM算法使用到了c++的新特性:auto自动推导变量类型,简洁循化体,lamada函数。这些新特型提高了编程效率。

编译工具使用CMake,ubuntu安装可以使用

sudo apt-get install cmake

CMake是什么?cmake(cross platform Make)是一个开源的跨平台自动化构建系统,用来管理程序构建,不依赖特定的编译器。CMake是一个跨平台的安装/编译工具,它能用简单的语句描述所有平台的安装/编译过程。通常在UNIX环境下,CMake根据CMakeLists.txt生成Makefile,在Makefile中定义了具体的编译过程。

在未使用CMake时,构建一个项目需要以下几个过程:

准备工作:

  1. 手动添加环境变量

  1. 在项目中手动添加项目路径

  1. 在项目中手中添加库路径

  1. 在项目中首动添加链接库名

  1. 在Debug和Release下分别配置对应的库

所以存在以下问题

  1. 方法不通用,对于不同版本的opencv,库的名称也不一样,在手动添加时需要修改库名称

  1. 构建好的项目不可以移植到其他的平台上,需要重新配置,代码移植成本很高

  1. 整个过程非常繁琐,非常容易出错

CMake常用指令

cmake_minimum_required(VERSION 2.8)#制定CMake版本,如果小于该版本,程序停止运行

project(TEST)#设置当前的项目名称为TEST

#指定头文件的搜索路径,方便编译器查找相应头文件
include_directories(/usr/local/inlcude)
#例子:
#要么在main.cpp文件中添加路径为/usr/local/include/opencv/cv.h
#要么在CMakelists.txt文件中添加include_directories(/usr/local/inlcude)
#这样在使用的时候就可以使用#include "opencv/cv.h",这样编译器就可以自动搜索到该头文件


#用指定源文件为工程添加可执行文件
add_executable(hello main.cpp)
#使用main.cpp生成一个hello的可执行文件

#设置变量代替值
set(variable value)
#eg. set(SRC_LST main.cpp other.cpp)
#可以使用SRC_LST代替后边的两个cpp程序


#将指定的原文件生成链接库文件。STATIC静态链接库,SHARED为共享链接库
add_library(libname STATIC/SHADER sources)

#为库或者可执行的二进制文件添加库链接
target_link_libraries(target library1 library2 ...)

#在工程中添加子目录,目录可以是绝对路径或者是相对路径、
add_subdirectory(source_dir)

#在目录下查找所有的子文件
aux_source_directory(dir varname)

#搜索第三方库
find_library(packageNmae version EXACT/QUIET/REQUIRED)
#version:指定查找库的版本。EXACT:要求该版本号必须匹配
#QUIET:禁止显示没有找到时的警告信息             
#REQUIRED:选项表示如果包没有找到,则cmake的过程会自动终止,并输出警告信息
#当find_library 找到一个库时,以下变量会自动初始化,NAME表示库的名称
#<NAME>_FOUND :显示是否找到库的标记
#<NAME>_INCLUDE_DIRS 或 <NAME>_INCLUDE:头文件
#<NAME>_LIBRARIES 或者 <NAME>_LIBS :库文件

CMake注意事项:

  1. cmake指令不区分大小写

  1. 参数和变量名称只可以使用数字、字母、下划线、破折号中的组合。引用变量使用${ },如果有多个变量使用空格隔开

  1. 一般来说工程有多个目录。使用CMakeLists.txt构建文件可以使用两种方式:(1)工程存在多个目录,只用一个CmakeLists.txt文件来管理。(2)存在多个目录,每个源文件都是使用一个CMakeLists.txt文件来管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值