认识CMake
在介绍CMake之前,需要介绍一些计算机基础,这样能更好的理解CMake到底是什么。
如何编译程序
计算机语言只是一个标准规范,只定义了语法,而编译器的工作就是将源代码转换为机器语言。
不同的操作系统、不同的IDE可以自由选择使用的编译器,常见的C++编译器有:GCC(GNU Compiler Collection)、MSVC系列、 llvm+Clang、 TCC(Tiny C Compiler)、 Borland C++等等
假如使用GCC
编译器进行程序开发,我们需要手动在命令行里面进行手动编译项目,大致过程是这样子:
# 手动编译源文件 $ gcc -Wall -g -o hello hello.c $ ./hello # 执行 Hello world! 复制代码
如何自动化构建程序
如果项目源文件非常多,每次都需要在命令行手动编译非常麻烦,于是就诞生了make工具
和Makefile文件
,注意两者是配套的。
可以理解为make工具是一个批处理应用程序,Makefile文件指定了程序如何进行编译和链接(其实就是配置文件),两者配合使用就能实现半自动化构建程序。
常见的make工具有有:GNU的gmake、MicroSoft的nmake等
如何跨平台开发程序
每个的make工具配套的Makefile文件编写规则都不兼容,在开发跨平台程序的时候,不可能每个平台的Makefile都写一遍,所以就诞生了跨平台的make工具,比如Qt的qmake
、kitware的cmake
等等。
CMake
可以输出各种Makefile(namke、gmake)和Project工程(visual studio、xcode),所以现在的跨平台游戏引擎大部分都选择了CMake
。
总结
CMake可以理解为使用平台无关的配置文件,自动编译链接程序的一个工具集,最大的优势就是跨平台。