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

简介: 编写cmake 是说要编写一个CMakeLists.txt 文件。编写过程包括以下主要部分,有了这些就可以有一个可以使用的cmake项目了,但是同样的你也可以扩展。

0e4633acc9cf80d3bc331511a082d4ef_e4c4b6bdedf84c21b455ef7758114ec0.png

cmake 快速上手

1.如何使用

1.环境:类Linux系统 (Ubuntu、Centos、redHad

2.检测方式:输入 cmake 然后回车。 通过这个/usr/bin/目录下的命令 检测有无对应的程序。

3.如果没有使用yum 或者rpm 安装。 ubuntu默认是rpm 、 centos默认是yum, 但是这个可以改,这里不再展开。

使用方式:

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

1.cmake 扩展讲解

2.cmake 的本质:

1.是对 MakeFile 的扩展使用

2.是一种项目管理工具

3.为了实现模块化、跨平台、快速上手、的目的而推出的一种辅助管理性语言。

对shell 和 MakeFile 进行了再扩展,所以可以使用一些 Linux下的宏常量。 也就可以 跳过 cmake 对 Linux中的宏操作 ,进而影响到cmake 的使用。

4.当然,cmake 也可以避免这种影响,这就是.cmake文件,这里可以参考一下lws的 c语言源码库,里面有大量的使用到

同样的 HDF5、NetCDF 的c语言库也有使用到,但是lws的源码中真正的将cmake 融入了他的工程使用中,不单单是一个辅助的角色。

2.为什么要 使用 cmake :

1.首先就是为了解决 c、c++ 在项目工程管理 中的 臃肿 和低效。

  1.举例:大型的c、c++ 项目,光光编译就要一个小时到两个小时,甚至更多。前置的依赖环境还必须有专门的人去维护。而这些对一个项目来说必须的考虑的内容,对于研发人员却是不必须的甚至拖累他的效率的。

2.这样中情况下,使用cmake 进行管理,就可以实现模块化管理,诸如调试或者更改小部分内容时,在实验室环境中就不必再去等待非更改内容的编译链接时间了。

3.当前置的动态库、或者静态库被修改后,只要由修改者重新指定位置,就可以了。对于业务研发实现者而言,不必再去了解这些,专心自己的功能。

大量的生态中使用,可以节省源码的学习成本

诸如:LibWebSocket 、HDF5、NetCDF。

也可以进一步了解程序的底层逻辑。

3.怎么使用 cmake:

1.请参考以上内容

2.借鉴LibWebSockets 的编码风格 : 以下的文件是指 CMakeLists.txt

在开始时使用 总文件,

3.再各个模块中使用 各自的 子文件。

4,在各个功能分支中使用 .cmake文件 提供 对应公共功能的 支持。

在使用功能时,就可以使用 查找指令,完成对项目的功能依赖模块的寻址,不再需要指定路径或者宏定义。提高了程序的稳定和安全

扩展资料

服务器高级架构体系

目录
相关文章
优化是一种习惯●出发点是"站在靠近临界"的地方
优化是一种习惯●出发点是"站在靠近临界"的地方
52 0
|
5月前
|
编译器 测试技术 Linux
技术洞察:循环语句细微差异下的性能探索(测试while(u--);和while(u)u--;的区别)
该文探讨了两种循环语句(`while(u--);` vs. `while(u) u--;`)在性能上的微妙差异。通过实验发现,后者比前者平均执行速度快约20%,原因在于循环条件检查的顺序影响了指令数量。尽管差异可能在多数情况下不显著,但在性能关键的代码中,选择合适的循环结构能优化执行效率。建议开发者在编写循环时考虑编译器优化和效率。未来研究可扩展到不同编译器、优化级别及硬件架构的影响。
|
算法 机器人 数据挖掘
量化合约套利机器人策略开发部署执行逻辑源码实例分析
量化合约套利机器人策略开发部署执行逻辑源码实例分析
|
人工智能 数据可视化 数据挖掘
你只管提需求,大模型解决问题:图表处理神器SheetCopilot上线
你只管提需求,大模型解决问题:图表处理神器SheetCopilot上线
254 0
|
自然语言处理 API Python
除庄周梦蝶外,庄子还讲过哪些梦你知道吗?新故事引出新版本——
除庄周梦蝶外,庄子还讲过哪些梦你知道吗?新故事引出新版本——
177 0
|
机器学习/深度学习 存储 传感器
《自然》:机器视觉行为理解与脑神经有内在关联?上交卢策吾团队构建映射模型
《自然》:机器视觉行为理解与脑神经有内在关联?上交卢策吾团队构建映射模型
283 0
|
存储
评价电脑内存条的好坏的参数有哪些?底层原理是什么?
评价电脑内存条的好坏的参数有哪些?底层原理是什么?
826 0
|
算法 数据处理
信用评分系统运行原理中篇-分箱逻辑(2)
信用评分系统运行原理中篇-分箱逻辑(2)
156 0
信用评分系统运行原理中篇-分箱逻辑(2)
|
算法 编译器 Python
信用评分系统运行原理中篇-分箱逻辑(1)
信用评分系统运行原理中篇-分箱逻辑(1)
177 0
信用评分系统运行原理中篇-分箱逻辑(1)
信用评分系统运行原理中篇-分箱逻辑(4)
信用评分系统运行原理中篇-分箱逻辑(4)
130 0
信用评分系统运行原理中篇-分箱逻辑(4)
下一篇
无影云桌面