Ubuntu18.04中 cmake从零构建hello slam 工程(一)

功能:输出字符串:hallo slam

文件路径:~ /Jane/ch2/test1

建立文件夹,操作如下图 :步骤1到步骤3

建立main.cpp文件,操作 :步骤4

进入main.cpp文件编写程序,操作 :步骤5

 

 

main.cpp文件:代码如下

这里我们不采用g++编译器,因为如果只靠g++命令,在后期我们需要输入大量的编译指令,整个编译过程就会变得繁琐。在这里,我们只用cmake管理源代码

在~/Jane/ch2/test1中新建文件CMakeLists.txt,操作如下:

 

 

CMakeLists.txt文件(需要遵守cmake的语法):内容如下

第一句:声明要求的cmake最低版本

第二句:声明cmake工程

第三句:添加一个可执行程序

#语法 add_executable(可执行程序的名字 源代码文件)

 

保存退出CMakeLists.txt文件,在当前目录下,输入命令:cmake .    (对当前目录下的工程进行分析)

用make命令对工程进行编译

查看当前目录下的文件,我们就可以发现生成的可执行文件:hello_code_name

执行hello_code_name(操作2),这就简单的完成了一个简单的字符串输出程序

 

关于cmake

cmake 过程处理了工程文件之间的关系,而 make 过程实际调用了 g++ 来编译程序。

如果想新增一个可执行文件时,只需在 CMakeLists.txt 中添加一行“add_executable”命令即可,而后续的步骤都是不变的。cmake 帮我们解决代码的依赖关系,无需输入一大串 g++ 命令

 

关于中间文件

在这个过程中,cmake 生成的中间文件还留在我们代码文件当中。如果我们想要删除编译过程中生成的中间文件时,就十分的不便。一种更好的做法是让这些中间文件都放在一个中间目录中,在编译成功后,把这个中间目录删除即可。

我们先将之前编译产生的中间文件删除,新建一个中间文件夹夹“build”,然后进入 build 文件夹,通过 cmake .. 命令,对上一层文件夹,也就是代码所在的文件夹进行编译。这样,cmake 产生的中间文件就会生成在 build 文件夹中,与源代码分开。当我们发布源代码时,只要把 build 文件夹删掉即可。

操作如下:

使用make命令编译工程,通过ls命令就可以在“build”文件夹下看到之前的编译产生的中间文件

升级一下:

使用库

在一个 C++ 工程中,只有带有 main 函数的文件才会生成可执行程序。而另一些代码,我们只想把它们打包成一个东西,供其他程序调用。这个东西叫做

一个库往往是许多算法、程序的集合,我们会在之后的练习中,接触到许多库。接下来要学习如何用 cmake 生成库,并且使用库中的函数。

为了和之前的test1文件夹分开,我们在目录~/Jane/ch2下新建文件夹text2 (步骤2)

新建一个文件:libhelloslam.cpp (步骤3)

在文件libhelloslam.cpp内书写源代码:

#include <iostream>

using namespace std;

void printfhelloslam( )

{

cout<<"hello slam"<<endl;

}

新建文件:main.cpp (步骤3)

在文件main.cpp内书写源代码:

#include "libhelloslam. h"

int main( )

{

printfhelloslam( );

return 0;

}

为了使用这个库libhelloslam,我们需要提供一个头文件,说明这些库里都有些什么。因此,对于库

的使用者,只要拿到了头文件和库文件,就可以调用这个库了。下面我们来写 libhelloslam的头文件

新建头文件:libhelloslam. h(步骤5)

在文件libhelloslam. h内书写源代码:

#ifndef LIBHELLOSLAM H_ //头文件的一个格式

#define LIBHELLOSLAM H_



void printfhelloslam(); //声明函数



#endif

在之前的 CMakeLists.txt的基础上添加一个可执行程序的生成命令,链接到刚才我们使用的

库上:

新建CMakeLists.txt文件(步骤6)

cmake_ minimum_ required(VERSION 2.8) //声明要求的cmake最低版本

project(hello_ project) //声明一个工程

add_ executable(helLo_ code_ name main.cpp) //添加一个可执行文件

target_ link_ libraries(hello_ code_ name helloslam) //连接到 “helloslam”库上

add_ library(helloslam libhelloslan.cpp) //文件libhelloslam.cpp将编译成一个叫做“helloslam”的库

 

最后我们使用命令编译工程

cd build

cmake ..

make

这时,在 build 文件夹中会生成一个 libhelloslam.a 文件,这就是我们得到的库

你的关注就是我最大的动力,如果对你有帮助,帮忙点个赞

 

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值