Qt Creator 插件开发(1):编译 Qt Creator

从技术架构角度来讲,Qt Creator 能够看作是一个插件平台,其大部分功能都是以插件的形式提供的。架构

本系列文章将着重介绍如何开发 Qt Creator 插件,以扩展 Qt Creator 的现有功能。虽然 Qt Creator 的最新版本已经提供了插件项目,可是从最底层开发 Qt Creator 插件,对于理解其架构也有至关的做用。所以,本文将不依赖于 Qt Creator 提供的项目向导,而是直接以 .pro 文件建立插件。同时,但愿在学习 Qt Creator 插件开发基础之上,了解 Qt Creator 的架构。本系列文章原文出自 http://www.vcreatelogic.com/downloads/files/Writing-Qt-Creator-Plugins.pdfide

本系列文章在 Windows 平台上,使用 mingw 版本 Qt 进行测试。Linux 平台请自行进行修改。学习

当咱们从 http://qt.nokia.com/downloads 下载 QtSDK 时,咱们已经得到了最新版本的 Qt Creator 。若是你下载的是 Windows 平台 mingw 版本的 QtSDK,其中包含的 Qt Creator 是使用 MSVC 进行编译的,而 Qt Framework 和 Qt Designer 则使用的是 mingw(这也就是为何有时候咱们的插件可以在 Qt Designer 找到,但在 Qt Creator 却看不到)。所以,若是咱们要使用 mingw 版本的 QtSDK 进行 Qt Creator 插件开发,须要本身编译 Qt Creator 。若是将来版本,QtSDK 提供的 Qt Creator 也是 mingw 编译的,那么,咱们最好仍是本身手动编译一下 Qt Creator 。这样咱们就能够得到一个 debug 版本的 Qt Creator ,从而更有利于插件的调试。(这里说明一下,Windows 平台下的 Qt Creator 之因此提供 MSVC 版本的,彻底是技术缘由。由于 mingw 缺乏一些 Qt Creator 所必需的 Windows API。)测试

这个页面上,咱们能够找到 Qt Creator 源代码的下载连接:http://qt.nokia.com/downloads/qt-creator-source-package。 在本文写做时,Qt Creator 最新版本是 2.2.1。咱们下载下来一个 zip 压缩包,解压以后,咱们在与 Qt Creator 源代码平级的目录中建立一个 build 文件夹,用于放置编译后的文件,以避免编译的过程文件同源代码混在一块儿(build 文件夹必须与 Qt Creator 源代码文件夹平级,这是 qmake 作 shadow build 时的要求)。因而,如今的目录结构以下所示:ui

QtCreator 目录结构

新版本的 Qt Creator 提供了一个 Qt Quick Designer,用于 Qt Quick 的可视化设计。不过,这个插件须要用到 Qt 的私有头文件。若是你是从 Nokia 直接下载的 QtSDK(就像上文说明的那样)安装,是没有这些私有头文件的。解决的办法是下载 Qt 的源代码(能够在 Qt libraries 这里找到一个 zip 的下载地址)。(这是 Qt Creator 已知的一个 bug,能够在这里找 到详细信息。)在下载 Qt 源代码以后,将 {Qt-source-code}\src\corelib\kernel\qwineventnotifier_p.h 复制到 {QtSDK-path}\Desktop\Qt\4.7.3\mingw\include\QtCore\private 这个文件夹下(没有的话请自行建立)。插件

而后,咱们运行“开始菜单\Qt SDK\Desktop\Qt 4.7.3 for Desktop (MinGW)”。此时会启动已经设置好 Qt 环境变量的命令提示符界面。而后使用 cd 命令,进入咱们刚刚建立的 build 文件夹。执行命令:debug

qmake ../qtcreator.pro “QT_PRIVATE_HEADERS=D:/Develop/QtSDK/Desktop/Qt/4.7.3/mingw/include”设计

其中,D:/Develop/QtSDK/Desktop/Qt/4.7.3/mingw/include 这个路径用于指定 Qt include 文件夹的位置。配置结束后,使用调试

mingw32-makecode

开始真正的编译(因为咱们使用的是 mingw 版本的 QtSDK,因此使用 mingw32-make。固然,你也可使用 nmake 使用 MSVC 进行编译。不过前面已经说过,咱们这篇文章是基于 mingw 的)。通过一段时间的编译(豆子的笔记本花了大概 75 分钟,硬盘占用 2.5G),若是没有错误的话(豆子在编译时会有找不到 qwineventnotifier_p.h 文件,在执行前面的修复以后便可经过。另外还可能会有一个找不到 ide_version.h 文件。若是出现这个问题,能够将 build\src\plugins\coreplugin 目录中的 ide_version.h,复制到 {qtcreator-2.2.1-src}\src\plugins\coreplugin), 咱们就会在 build\bin 下面找到 qtcreator.exe 可执行文件。双击运行一下,若是一切正常,那么恭喜你!一个 debug 版本的 Qt Creator 已经编译完成了!(可能会有找不到 dll 的错误,若是出现的话请自行修复路径。启动咱们编译的 Qt Creator 会很慢,由于这是 debug 版本的。)

最后强调一点,必定要从源代码编译 Qt Creator ,不然,后面的插件开发的编写和测试工做可能会有许多问题。