电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【7天搞定视觉SLAM】番外1——CMAKE的使用
分 享
扫描二维码分享
【7天搞定视觉SLAM】番外1——CMAKE的使用
cmake
hero_chao
关注
发布时间: 2020-04-16
丨
阅读: 440
# 1.什么是CMAKE? > CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。 每一个C++程序都可以使用g++编译,但为什么要用CMAKE呢? 其实,当程序规模越来越大的时候,用g++编译就会使用非常长的编译命令,一个C++项目往往有大量的依赖关系,使用g++编译是不太现实、非常麻烦的操作。 在工程上,使用一些项目管理软件会非常方便,而cmake则是异常方便的一款。 cmake编程生成makefile,使用make编程生成执行文件。 # 2.小试牛刀 接下来,根据上一章最后讲的程序内容,我们使用CMAKE编译一下。 首先,创建CMakeLists.txt文件。 ```cpp sudo gedit CMakeLists.txt ``` 复制一下内容到上述文件。 ```cpp # 声明要求的 cmake 最低版本 cmake_minimum_required(VERSION 2.8) # 声明一个 cmake 工程 project(HelloSLAM) # 设置编译模式 set(CMAKE_BUILD_TYPE "Debug") # 添加一个可执行程序 # 语法:add_executable( 程序名 源代码文件 ) add_executable(helloSLAM helloSLAM.cpp) # 添加hello库 add_library(hello libHelloSLAM.cpp) # 共享库 add_library(hello_shared SHARED libHelloSLAM.cpp) # 添加可执行程序调用hello库中函数 add_executable(useHello useHello.cpp) # 将库文件链接到可执行程序上 target_link_libraries(useHello hello_shared) ``` 输入命令对当前文件夹的cpp文件进行编译。 ```cpp sudo cmake . sudo make ``` 我们就可以看到和g++一样的编译结果了! # 3.链接库 接下俩我们创建几个文件,来讲解一下什么是库,我们可以使用cmake编译库以供我们使用。在linux系统中,库分为静态库,以.a结尾,和共享库,以.so结尾,类似windows下的dll库。 创建libHellSLAM.h文件 ```cpp #ifndef LIBHELLOSLAM_H_ #define LIBHELLOSLAM_H_ // 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误 // 打印一句hello的函数 void printHello(); #endif ``` 创建libHellSLAM.cpp文件 ```cpp //这是一个库文件 #include <iostream> using namespace std; void printHello() { cout << "Hello SLAM" << endl; } ``` 创建useHell.cpp文件 ```cpp #include "libHelloSLAM.h" // 使用 libHelloSLAM.h 中的 printHello() 函数 int main(int argc, char **argv) { printHello(); return 0; } ``` 我们再来看看CMakeLists.txt文件 ```cpp # 声明要求的 cmake 最低版本 cmake_minimum_required(VERSION 2.8) # 声明一个 cmake 工程 project(HelloSLAM) # 设置编译模式 set(CMAKE_BUILD_TYPE "Debug") # 添加一个可执行程序 # 语法:add_executable( 程序名 源代码文件 ) add_executable(helloSLAM helloSLAM.cpp) # 添加hello库 add_library(hello libHelloSLAM.cpp) # 共享库 add_library(hello_shared SHARED libHelloSLAM.cpp) # 添加可执行程序调用hello库中函数 add_executable(useHello useHello.cpp) # 将库文件链接到可执行程序上 target_link_libraries(useHello hello_shared) ``` 大家有什么发现吗,到这里你就会了如何使用CMAKW工具了,在useHello.cpp中使用了我们编译好的库,并且在CMakeLists.txt进行声明。 这是非常简单的步骤,感兴趣的大家可以查阅cmake提供的官方文档,相信你会有更大的发现!</iostream>
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
hero_chao
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交