CMake学习资源
为什么选择CMake
目前比较流的build manager有Autoconf、JAM、SCons、ANT、Make。以Makefile为例,Linux下面主流项目很多都是用Makefile组织代码的,但是由于各厂商 Make 工具( GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp)遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。为了兼容不同平台,你必须每一种标准写一次 Makefile ,这将是一件让人抓狂的工作,而且Makefile的语法还有点两人抓狂。
Autoconf与automake搭配使用可以提供部分与CMake同样的功能。但是如果在Windows平台上允许这些工具将不得不安装许多额外的工具,而且配置繁琐易出错。不仅如此,很多在CMake看来很容易的工作,Autoconf却很难处理,即便能处理扩展性也很差。即便前面提到种种问题你都解决了,你顺利得到了Makefiles,很不幸,你还必须在命令行下执行。而CMake却可以只针对不同平台(Windows的Visual Studio、Mac的XCode)生成不同项目构建文件,简直是coder的福音!qmake是最像CMake的,但是比CMake缺少了system interrogation功能,qmake的输入格式与传统Makefile很接近。ANT、JAM、SCons支持跨平台,但是不支持生成native project files。他们打破了使用Makefile构建项目的传统,ANT使用XML,JAM使用自己的语言,SCons使用Python。他们中很多都是直接运行编译器(compiler),而不是让system's build process做这项工作。而且为了确保这些工具的使用,在构建之前往往需要先Python、Java等软件。
除了这些构建工具外,部分牛人选择自己写脚本来实现项目构建,例如使用Perl、Python脚本来实现项目构建。抛开技术上实现难度不谈,使用这种方式构建软件很像大年三十吃饺子,找里面硬币的过程。当用户使用你提供的脚本构建软件的时候,在他们正式开启构建工作之前,必须先安装4.3.2版本的这个包,再安装3.2.4版本的那个包。而CMake在这一点上做的就很好,通常情况下只需要使用C/C++编译器就够了。
CMake运行在什么平台
Windows 98/2000/XP/Vista/7, AIX, HPUX, IRIX, Linux, Mac OS X, Solaris, OSF, QNX, CYGWIN, MinGW, and FreeBSD.
基本上,如果你是一个coder,完全不用担心平台问题。
学习资源汇总
入门篇
视频系列
Getting Started With CMake(Part 1 ~ 6)
文章系列
首选!官方手册,可以查阅常见命令用法
推荐!官方tutorial
推荐!在 linux 下使用 CMake 构建应用程序 这篇文章选自IBM开发者社区,非常适合入门
书籍
《Cmake Practice》--Cjacker 国人总结,适合快速入门
提高篇
视频
C++Now 2017: Daniel Pfeifer “Effective CMake"
C++Now 2018: Mateusz Pusz “Git, CMake, Conan: How to Ship and Reuse our C++ Projects”
书籍
《Mastering CMake》Ken Martin, Bill Hoffman