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文件 提供 对应公共功能的 支持。
在使用功能时,就可以使用 查找指令,完成对项目的功能依赖模块的寻址,不再需要指定路径或者宏定义。提高了程序的稳定和安全
扩展资料
服务器高级架构体系