今天我们来聊聊一个既能引发“群体暴动”,又能让人陷入沉思的话题:CMake。如果你是一个从事 C 或 C++ 开发的程序员,那大概率已经和 CMake “斗智斗勇”过了。很多人吐槽它难用、丑陋、反人类,但转头还是得乖乖用它。那么问题来了:为什么 CMake 让我们这么讨厌,却没有更好的东西取代它?
1.人类天生讨厌学习曲线
不熟悉的东西总是让人感到不舒服,更别提 CMake 的学习曲线简直像一堵墙。我们都知道,当你急着完成一个任务™时,学一个工具的感觉就像上坡推车,痛苦到想骂人。
CMake 的不直觉性是学习曲线的罪魁祸首
- 奇怪的语法: 你见过哪个现代工具还在用这种大写的 ADD_EXECUTABLE 和 ENDIF()?甚至变量定义 set() 和引用语法 $(...) 也非常容易搞混。你总觉得自己回到了上世纪在用某种古老的编程语言。
- 变量系统让人崩溃: 想象一下,你需要通过 10 种不同的方式给源文件传递编译选项。什么 CMAKE_CXX_FLAGS、target_compile_options、add_compile_options,外加神秘的 INTERFACE_COMPILE_OPTIONS,再加上环境变量,瞬间觉得人生已然无望。
- 调试难如登天: 遇到问题想 debug?大多数时候你只能靠 message() 手