CMake常用语法详解1

为什么要有Cmake

上面我们提到,一套C++程序从源代码到最终可执行程序是要经历过预处理、编译、汇编、链接等多个过程,因此我们需要一套配置工具,在一个大项目运行的时候来代替上面的复杂过程,因此我们就有了Makefile,但是Makefile在大型项目、跨平台等多样化需求下显得力不从心了,因此就有了Cmake。定义如下:

CMake 是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个函数库。
CMake 通过使用简单的配置文件 CMakeLists.txt,自动生成不同平台的构建文件(如 Makefile、Ninja 构建文件、Visual Studio 工程文件等),简化了项目的编译和构建过程。
CMake 本身不是构建工具,而是生成构建系统的工具,它生成的构建系统可以使用不同的编译器和工具链。

他有如下优势:

  1. 跨平台支持:CMake支持多种操作系统和编译器,使得同一份构建配置可以在不同的环境中使用。
  2. 简化配置: 通过 CMakeLists.txt 文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本。
  3. 自动化构建: CMake 能够自动检测系统上的库和工具,减少手动配置的工作量。
  4. 灵活性: 支持多种构建类型和配置(如 Debug、Release),并允许用户自定义构建选项和模块。

基本工作流程

  1. 编写 CMakeLists.txt 文件: 定义项目的构建规则和依赖关系。
  2. 生成构建文件: 使用 CMake 生成适合当前平台的构建系统文件(例如 Makefile、Visual Studio 工程文件)。
  3. 执行构建: 使用生成的构建系统文件(如 make、ninja、msbuild)来编译项目。

其中,CmakeLists.txt就是CMake 的配置文件,用于定义项目的构建规则、依赖关系、编译选项等。每个 CMake 项目通常包含一个或多个 CMakeLists.txt 文件。

CmakeLists.txt语法

我们从一个项目的CMakeLists开始介绍,结合具体的项目可能会更好的理解。这里选择的项目是kf_gins_ros,这个项目是基于武汉大学开源代码KF-GINS进行修改的ROS版本,KF-GINS是一种利用卡尔曼滤波进行的GPS导航数据和IMU数据进行融合导航,获得载体更高频率的位姿信息。但是KF-GINS的数据源是txt数据,不适合仿真模拟,所以就有大佬将其修改成ROS版本,链接如下:链接:

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值