【VSLAM学习记录2】初识cmake

目录:

  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中添加一个可执行程序的生成命令,链接到刚才使用的库上:
在这里插入图片描述
执行
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SESESssss/article/details/103606934