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

Qt Creator 是 Nokia 在收购 Qt 之后于 2009 年早期推出的一款 IDE。在一定程度上,Qt Creator 也是 Qt 开发的主要 IDE。从技术架构角度来说,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.pdf

本系列文章在 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 时的要求)。于是,现在的目录结构如下所示:

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 文件夹。执行命令:

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-make

开始真正的编译(由于我们使用的是 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 ,否则,后面的插件开发的编写和测试工作可能会有许多问题。

41 Comments

  1. duguqiusui 2012年10月21日
    • DevBean 2012年10月21日
      • great 2013年1月19日
        • 豆子 2013年1月21日
          • great 2013年1月22日
          • 豆子 2013年1月23日
  2. duguqiusui 2012年10月21日
  3. duguqiusui 2012年10月21日
  4. duguqiusui 2012年10月21日
    • DevBean 2012年10月22日
  5. duguqiusui 2012年10月22日
    • DevBean 2012年10月23日
  6. 米米 2013年3月28日
    • 豆子 2013年3月29日
      • 米米 2013年4月11日
        • 豆子 2013年4月11日
          • 米米 2013年4月12日
          • 豆子 2013年4月12日
          • 米米 2013年4月12日
          • 米米 2013年4月12日
          • 米米 2013年4月12日
          • 豆子 2013年4月12日
  7. vbuser 2015年9月5日
    • 豆子 2015年9月5日
  8. ye2012 2015年10月21日
    • ye2012 2015年10月21日
      • 豆子 2015年10月23日
    • 豆子 2015年10月23日
      • ye2012 2015年10月23日
        • 水手1990 2015年12月14日
  9. 水手1990 2015年12月10日
  10. 水手1990 2015年12月10日
    • 豆子 2015年12月14日
      • 谢启凯 2016年1月16日
        • 豆子 2016年1月17日
  11. 姚远 2016年2月5日
    • 豆子 2016年2月22日
  12. atsunlun 2016年6月13日
    • atsunlun 2016年6月13日
  13. chengnan5603 2017年5月3日
  14. Keke.Cheng 2018年7月26日

Leave a Reply