1.示例代码其实都非常简单,直接使用 GCC 编译器编译即可,连 Makefile 都不需要。
在实际的项目中, 一个工程中可能包含几十、成百甚至上千个源文件, 这些源文件按照其类型、功能、模块分别放置在不同的目录中;
面对这样的一个工程,通常会使用 make 工具进行管理、编译, make 工具依赖于 Makefile 文件,通过 Makefile 文件来定义整个工程的编译规则,使用 make 工具来解析 Makefile 所定义的编译规则。
2.Makefile 带来的好处就是——“自动化编译”,一旦写好,只需要一个 make 命令,整个工程完全按照Makefile 文件定义的编译规则进行自动编译,极大的提高了软件开发的效率。
不同make工具遵循着不同的规范和标准, 对应的 Makefile 文件其语法、 格式也不相同, 这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台下编译, 而如果使用上面的 make 工具,就得为每一种标准写一次 Makefile。
3.而 cmake 就是针对这个问题所诞生, 允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程, 再根据具体的编译平台,生成本地化的 Makefile 和工程文件,最后执行 make 编译。
因此,对于大多数项目, 我们应当考虑使用更自动化一些的 cmake 或者 autotools 来生成 Makefile,而不是直接动手编写 Makefile。
4.cmake 简介
cmake 是一个跨平台的自动构建工具。
cmake 的诞生主要是为了解决直接使用 make+Makefile 这种方式无法实现跨平台的问题,所以 cmake 是可以实现跨平台的编译工具。
它允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程, cmake 工具会解析 CMakeLists.txt 文件语法规则,再根据当前的编译平台,生成本地化的 Makefile 和工程文件,最后通过 make 工具来编译整个工程;
5.cmake 和 Makefile
cmake 就是用来产生 Makefile 的工具,解析 CMakeLists.txt 自动生成 Makefile:
6.cmake 就是一个工具命令,在 Ubuntu 系统下通过 apt-get 命令可以在线安装。