Preface

CMake,现代C/C++构建系统的事实标准,但是很多人对CMake的感觉大概就是“想说爱你不容易”。由于官方文档较差的可读性,很多人对这一强大的工具望而却步。笔者在学习、使用CMake的时候,也曾遭遇相同的痛苦,因此本文尝试以面向对象的思维方式,简要解释现代CMake的使用经验及思路。

何为“现代”CMake?这个问题的答案五花八门,众说纷纭。但是一个公认的分水岭是CMake 3.0的发布——在这个版本中,代码构建以目标(Target)为中心,围绕着目标设置构建规范(Build Specifications)与使用要求(Usage Requirements),这些约束的作用域由CMake自动管理,而非2.x时代由程序员手工管理。

2014年,CMake 3.15正式发布,在一些资料中,该版本及后续版本被称为更现代的CMake(More Modern CMake)——该版本中引入了属性(Property)的概念,允许用户自定义目标的属性,此时,

面向对象的CMake

Legacy V.S. Modern

References

  1. Documents of CMake v3.28
  2. Modern CMake简明教程
  3. Modern CMake for C++ by Rafał Świdziński