Cmake的介绍 适用于快速使用, 和期望深究的两类人群

发布于:2023-01-18 ⋅ 阅读:(568) ⋅ 点赞:(0)

在这里插入图片描述

cmake 快速上手

  1. 如何使用
    1. 环境:类Linux系统 (Ubuntu、Centos、redHad
    2. 检测方式:输入 cmake 然后回车。 通过这个/usr/bin/目录下的命令 检测有无对应的程序。
      1. 如果没有使用yum 或者rpm 安装。 ubuntu默认是rpm 、 centos默认是yum, 但是这个可以改,这里不再展开。
    3. 使用方式:
      1. 创建 :cmake [期望的CMakeLists.txt 文件路径]
      2. 创建并编译: cmake [期望的CMakeLists.txt 文件路径] && make
  2. 如何编写
    1. 编写cmake 是说要编写一个CMakeLists.txt 文件。
    2. 编写过程包括以下主要部分,有了这些就可以有一个可以使用的cmake项目了,但是同样的你也可以扩展。
      1. 声明程序的工程名称
      2. 声明cmake文件适用的cmake 版本
      3. 哪些文件构建什么进程
      4. 构建的进程需要哪些非系统库。
  3. 如何扩展
    1. 声明程序时,可以指定编译语法和编译语言
    2. 如指定:c语言编译、c99编译、c++编译、
    3. 声明cmake文件的适用版本的时候,不单可以使用单版本,也可以使用...来设定一个范围。
    4. 可以指定文件的检索目录来完成多层文件夹中,无CMakeLists.txt的子文件夹中文件被使用的编译情景。
    5. 可以指定加载的当前文件夹下的子文件夹名称,完成 有CMakeLists.txt文件的子文件夹下项目分支的构建。
    6. 可以指定特有库的特定目录,完成动态库加载、静态库加载时的 路径查找 。效果类似于 MakeFile中的 -L 命令。
    7. 拥有打印功能,在CMakeLists.txt文件被执行时,可以打印期望看到的数据。
    8. 拥有宏系统,可以通过宏判断实现跨平台,跨语种,的需求。
    9. 可以通过宏重用,实现 编译选项的重写, 例如 添加 -std=c++11 使用c++11特性。
  4. 语法介绍1

cmake 扩展讲解

  1. cmake 的本质:
    1. 是对 MakeFile 的扩展使用
    2. 是一种项目管理工具
    3. 为了实现模块化、跨平台、快速上手、的目的而推出的一种辅助管理性语言。
    4. 对shell 和 MakeFile 进行了再扩展,所以可以使用一些 Linux下的宏常量。 也就可以 跳过 cmake 对 Linux中的宏操作 ,进而影响到cmake 的使用。
    5. 当然,cmake 也可以避免这种影响,这就是.cmake文件,这里可以参考一下lws的 c语言源码库,里面有大量的使用到
    6. 同样的 HDF5、NetCDF 的c语言库也有使用到,但是lws的源码中真正的将cmake 融入了他的工程使用中,不单单是一个辅助的角色。
  2. 为什么要 使用 cmake :
    1. 首先就是为了解决 c、c++ 在项目工程管理 中的 臃肿 和低效。
      1. 举例:大型的c、c++ 项目,光光编译就要一个小时到两个小时,甚至更多。前置的依赖环境还必须有专门的人去维护。而这些对一个项目来说必须的考虑的内容,对于研发人员却是不必须的甚至拖累他的效率的。
      2. 这样中情况下,使用cmake 进行管理,就可以实现模块化管理,诸如调试或者更改小部分内容时,在实验室环境中就不必再去等待非更改内容的编译链接时间了。
      3. 当前置的动态库、或者静态库被修改后,只要由修改者重新指定位置,就可以了。对于业务研发实现者而言,不必再去了解这些,专心自己的功能。
    2. 大量的生态中使用,可以节省源码的学习成本
      1. 诸如:LibWebSocket 、HDF5、NetCDF。
      2. 也可以进一步了解程序的底层逻辑。
  3. 怎么使用 cmake:
    1. 请参考以上内容
    2. 借鉴LibWebSockets 的编码风格 : 以下的文件是指 CMakeLists.txt
      1. 在开始时使用 总文件,
      2. 再各个模块中使用 各自的 子文件。
      3. 在各个功能分支中使用 .cmake文件 提供 对应公共功能的 支持。
      4. 在使用功能时,就可以使用 查找指令,完成对项目的功能依赖模块的寻址,不再需要指定路径或者宏定义。提高了程序的稳定和安全

扩展资料

服务器高级架构体系


  1. ![[【cmake】cmake教程]] ↩︎

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到