上个周学到了 CMake一个可以跨平台的构建工具。那么首先我们先说说什么是跨平台——这也是 CMake 最重要的功能。如果一份代码要在不同的系统上编译执行是需要写很多份配置文件的。比如Windows 需要 .sln 解决方案文件Linux 需要 MakefilemacOS 需要 .xcodeproj 工程文件。相当于一份代码要写三份配置那得多累。而 CMake正好能解决这个问题——只需要写一份 CMakeLists.txt用几个简单的命令就能让代码在各个平台上都跑通。那 CMake 又是怎么做到的呢首先要明确CMake并不是编译器它不能直接编译代码而是能生成系统所需的原生构建文件再由这些文件驱动编译。整个过程可以分成两个阶段一、配置阶段CMake 读取 CMakeLists.txt里的命令同时探测当前系统环境比如找编译器、查依赖库路径在内部构建一棵目标的依赖树并把探测结果缓存到CMakeCache.txt 中。二、生成阶段根据上一阶段的结果将内存中的构建模型转写成特定平台的构建文件比如 Makefile、.sln 这些。最后就可以通过这些文件实现强大的跨平台编译了。