“专业cmake”(Craig Scott著)之短评论。

http://lockywolf.files.wordpress.com/2021/11/001_book-cover.png

我读完了一本Craig Scott的书,叫做“专业CMake”(Professional Cmake). 这篇文章是我的对这本书的评论。 这篇评论确实会短一点,因为我不觉得它拓展了我的认知。 我决定为所有我读过的书写书评,所以这本书不例外。

1. 引见

因为我的工作语言需要转变为C++,所以我需要学习cmake。 在新公司,项目构建系统并不完善,所以我致力于把它更新和重构(重建),转变到现代的cmake。 自然地,我搜索过cmake相关的参考资料。虽然cmake官方的说明书很丰富, 但是我还希望找到某些更通俗的资料。 (在学习新领域的知识时,我通常会搜索一些叙述某些工具使用方法的书。) Craig Scott的书相对有名且容易搜索到,有很多好评,所以我试着阅读这本书。

2. 书的结构。

这本大概可以分为三部分。 第一部分为读者提供了此工具的一般概述,描述几种最常见的使用模式,并简要介绍了它的历史。 第二部分描述cmake的主要的应用领域 – 构建软件项目,即将一堆C++(主要是 C++,虽然也支持其他与 C 相关的语言)组装成一个工作系统。 第三部分,基于第二部分,继续说明cmake的功能,在强调cmake的不常见的的功能,尤其是内装的测试软件工具,CTest,和一个密切相关的测试结果仪表板 Cdash。

3. 风格

表面上,这本书似乎只是重述官方资料。 不幸的是,这本书真的是这样。 显然,写科技(或软件)相关的书时很难完全避免让读者参考官方资料,但是我感觉这本书过多使用了这个方法。 把"Autotools: a Practitioner's Guide"和“专业CMake”作对比官方文档的摘录数量要大得多。 然而,这不是我们通常阅读技术类书籍的目的。 反而,我们之所以读技术类书籍是为了获得工作上的感知力“使用你知道的,找出你未知的”。 另一方面,由于理解这个需求,“Professional CMake”的每章结尾都有“recommended practices”子章节。 它们都是按照作者的观点写的,可能是旨在提高对cmake的感知力。

4. Cmake

这位作者显然很喜欢cmake。 他称赞它的“policy”系统,该系统允许用户使用的时候调整cmake的功能来匹配老版本, 同时,它允许对兼容性进行调整,向代码库添加功能的便利性,部分原因是它具有良好的可读性。 但是,我更赞同这样的观点:一种好的程序语言不需要不断增加更多功能。 当然,构建系统一定会需要某些特有的功能,即迎合具体的编程和操作系统又运用不良手段。 在我看来,cmake做过了头。 也许,不如 GNU Automake 所做的那么多,但是花在编写算法上的努力本可以花在改进 cmake 语言本身上。 对,你们没有误读,cmake首先是一种编程语言。 在 C/C++ 生态系统中引入了另一种语言。 为什么我们的工具箱需要附加的一个语言? 好的,可以说 POSIX Shell,尤其是它在 Autotools 的使用中是一种糟糕的语言。 甚至使用分号分隔列表也是一个奇怪的想法。 但更重要的是——也许这本书最大的缺点是,作者似乎没有意识到这些缺点,而且对这些缺点避而不谈。 对于试图创作专业书籍的人来说,这是一个重大的失误! 对我个人而言,最令人失望的是,作者貌似不仅不理解Macro和Function的区别,而且不明白他们存在的目的。

5. 结论

“专业的CMake”可以完成这项工作。 如果你需要一些不那么快速的cmake介绍, 希望看到比随手可以搜索到的网络入门博客文章更深入,但不像官方说明那样重量级的资料,你可以选择阅读它。 这不算是一个糟糕的选择。 如果您遵循本书的教程,您也不太可能编写出旧的、难以维护的 cmake 代码。 但是不要期望这本书会让你成为 CMake 专家,或者给你关于难于理解的 cmake 手段的预报。 所以请你降低对这本书籍的预期。

6. 联系方式

如果您在此博客或其他页面中发现任何有用的内容,请订阅并打赏。 请您转发、分享和讨论,您的反馈可以帮助我变得更好。

Telegram
http://t.me/unobvious
GitLab
http://gitlab.com/lockywolf
PayPal
https://paypal.me/independentresearch