目录:

  1. 用g++编译
  2. 1)用cmake编译
    2)分隔中间文件
  3. 新建并使用库

用g++编译:

编写一个c++程序,用g++编译



编译完成后在当前路径下生成一个a.out文件,执行

用cmake编译:

通常一个小型C++项目可能包含十几个类,各类之间还存在着复杂的依赖关系,其中一部分要编译成可执行文件,另一部分编译成库文件。如果仅依靠g++命令,我们需要输入大量的编译指令,整个过程会非常繁琐。使用cmake会帮我们解决代码的依赖关系,而无需输入一堆g++命令。

新建一个CMakeLists.txt文件,内容如下,该文件用于告诉cmake我们要对这个目录下的文件做什么事情(cmake语法)

# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )# 声明一个 cmake 工程
project( HelloSLAM )# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( helloSLAM helloSLAM.cpp )

在当前目录使用cmake . 命令

cmake编译生成Makefile文件

用make命令根据Makefile文件内容编译整个工程

编译成功会生成对应的可执行程序,执行它

分隔中间文件

将cmake生成的中间文件统一存放在新建build文件夹中

新建并使用库

建立一个库文件



我们在CMakeLists.txt里加上以下内容,将该文件编译成一个叫hello的库

然后用cmake编译整个工程

cd build
cmake ..
make

这时,在build中就会声称一个libhello.a文件,这便是我们得到的库(静态库)

若要生成共享库,只需添加以下语句

此时得到的便是.so文件

只要有了头文件和库文件,就可以调用这个库了

下面编写libhello的头文件

下面写一个cpp文件来调用这个函数

#include"libHelloSLAM.h"
int main()
{printHello();return 0;
}

然后在CMakeLists.txt中添加一个可执行程序的生成命令,链接到刚才使用的库上:

执行

【VSLAM学习记录2】初识cmake相关推荐

  1. Threejs 学习记录:初识 threejs

    Threejs 学习记录:第一个三维立体场景 第一个三维立体场景 创建场景三要素:场景.相机.渲染器 添加场景主体:旋转立方体 渲染场景 动画立方体 第一个三维立体场景 跟随官方示例创建一个带有旋转立 ...

  2. VSLAM学习记录-求导:李群与李代数

    旋转的求导过程 1.基础知识回顾:导数与微分 2.优化中的旋转量 2.1 背景 2.2 李群和李代数 2.2.1 李群 2.2.2 李代数与李群的关系:指数映射 2.2.3 如何求李代数 3.求导:左 ...

  3. 【VSLAM学习记录1】视觉SLAM

    文章目录 SLAM简介: 经典视觉SLAM流程: SLAM第一讲习题: 1.线性方程 AX=b 该如何求解,对A和b有何要求? Ps:(以向量空间的角度理解) 2.高斯分布(通常指正态分布概率密度函数 ...

  4. 学习记录1Python初识

    一. 1.print() 函数 打印输出的意思,将括号内的内容打印出来.具体如下: 注:标点符号要使用英文符号,用中文符号会报错 print("向命运,未知的前方,而你与我共航") ...

  5. MIPI学习记录——初识mipi

    MIPI学习记录 1.初识mipi 2.MIPI框架 2.1 CSI (Camera Serial Interface) 2.2 CCI (Camera Control Interface) 1.初识 ...

  6. 【Cmake】Cmake学习记录

    Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...

  7. 【Makefile由浅入深完全学习记录2】初识 makefile 的结构

    继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...

  8. PyTorch源码学习系列 - 1.初识

    本系列文章会优先发布于微信公众号和知乎,欢迎大家关注 微信公众号:小飞怪兽屋 知乎: PyTorch源码学习系列 - 1.初识 - 知乎 (zhihu.com) 目录 本系列的目的 PyTorch是什 ...

  9. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  10. NLP训练营学习记录(一)

    文章目录 NLP训练营学习记录(一) 理解性小案例:机器翻译 概率语言模型 优化 自然语言处理的四个维度 算法复杂度 归并排序以及Master Theorem(主定理分析) P.NP hard.NP ...

最新文章

  1. 安装了mysql5.7后,如何进行配置(密码等)初始化
  2. jenkins使用Git为源码管理(windows master linux slave)
  3. @InsertProvider 实现批量插入数据
  4. 聊一聊 bootstrap 的轮播图插件
  5. 上传EXCEL到ABAP内表
  6. python float 精度_浅谈Python里面小数点精度的控制
  7. 基于代价函数小波脊相位的MFSK信号符号速率估计MATLAB仿真及代码(2020.12.14更新)
  8. IntelliJ IDEA 2021.2 正式发布
  9. 百度地图智能语音助手用户量突破3亿:确实方便
  10. Spring Boot(5) web开发(3)拦截器、文件上传、异常处理
  11. 阿里星专访丨星罡:因为期待,你需要更出色!
  12. softmax回归的简洁实现-09-p5
  13. Mybatis中传参包There is no getter for property named 'XXX' in 'c
  14. 惠普电脑u盘重装系统步骤_hp怎么用u盘重装系统|hp优盘装系统教程
  15. Java—图书管理系统
  16. html设置桌面背景win7,win7系统设置默认桌面背景的还原方案
  17. think-cell丨Images图像丨教程
  18. 多种矿石混合的抗干扰矿石对讲机
  19. web前端开发面试题(六)
  20. 《老路用得上的商学课》26-30学习笔记

热门文章

  1. 世界国旗/地图:世界各国国旗图标整理/与echarts世界地图配置对应
  2. NeatUpload使用方法
  3. 算法——Java实现栈
  4. java程序设计基础_陈国君版第五版_第四章习题
  5. 如何用计算机截部分屏,电脑怎样截长屏_电脑如何长截屏截图-win7之家
  6. 史上最强三千六百道脑筋急转弯(3)
  7. QTouch Linux 组态软件
  8. vrPlus之ARView教程,可实现zView效果,无需二次开发
  9. 什么是驱动程序签名,驱动程序如何获取数字签名?
  10. kaptcha谷歌验证码工具