针对 Qt Creator 源代码的分析已经计划了很长时间,但是一直没有进行。至于为什么要读源代码,这个问题已经不需要我们去回答。源码之前,了无秘密。站在巨人的肩膀上,我们也会比之前高那么一点点。
我们可以去读 Qt 的源代码。这对于深入学习 Qt 是不可或缺的,但是,对于初学者以及更多的普通开发者而言,直接读 Qt 的源代码还是比较困难的。首先,Qt 是一个跨系统的通用库,很多有关操作系统层面的内容,初学者可能并不能够理解;其次,Qt 的源代码非常复杂,很容易让读者产生挫败感。更重要的一点是,对于大多数开发人员,学习 Qt 的源码设计固然重要,但是,能够学习如何更好地使用 Qt 开发,则显得更加立竿见影。这并不是急功近利,而且不同的层次。当你达到了需要研究 Qt 源代码的层次,再去仔细研究也并不会晚。所以,现在我们选择的是研读基于 Qt 的项目的源代码。
基于 Qt 有很多优秀的项目,比如 KDE,比如 VirtualBox。但是,对于初学者来说,KDE 显然是不合适的,因为 KDE 太过庞大(比起 Qt 来也是有过之而无不及),而且需要更加深厚的操作系统基础——至少需要了解 x-window 的相关知识。这一点已经足以阻挡相当多读者的脚步。至于 VirtualBox,且不说我们能不能读到它的源代码,即便能够读到,一个虚拟机的源代码应该不会比操作系统的好理解到哪去。
于是,我们选择了一个相对简单的著名应用——Qt Creator。可能你并不用它,但是只要安装 Qt SDK,默认都会安装了 Qt Creator。这是一个轻量级 IDE,但又足够复杂,算得上是一个有一定复杂度的应用。经过很多年的发展,Qt Creator 的源代码已经变得非常庞大,只能大略地学习。豆子稍微统计了一下,仅 src 目录下的 .cpp 和 .h 文件,Qt Creator 的代码行就超过 72 万!
所以,即便想要通读 Qt Creator 的源码,也已经变得不现实。不过对于我们来说,并不需要通读全部代码。
Qt Creator 是设计精巧的插件式系统。类似于著名的 Eclipse,Qt Creator 的核心是一个插件管理器,其所有功能都是使用插件完成。后面我们会看到,在启动时,Qt Creator 会首先加载一个名为 coreplugin 的插件。该插件提供了 Qt Creator 最基本的功能和扩展点,其余的插件都是直接或间接依赖于该插件提供的机制,一步步扩充 Qt Creator 的功能,最终将其变成一个功能完整的 IDE。针对 Qt Creator 的这种设计,我们应该将关注重点放在插件管理器的实现、coreplugin 的实现上面。另外,Qt Creator 完全基于 qmake 的复杂开发模式,也是我们需要重点学习的。我希望通过我们对 Qt Creator 源代码的学习,最终能够学会如何使用 qmake 管理一个相当复杂的项目(比如 Qt Creator 的近 5000 个文件);如何开发我们自己的插件管理器;如何使用插件扩展我们的系统等。
文章内容来源:https://www.devbean.net/2016/07/qt-creator-source-study-01/