Qt备忘录之六:编译独立Qt模块

最近有个项目打算用QtCharts模块来做图表展示,但是Qt5.5.0默认没有编译这个模块。顺便就研究了下已有Qt环境时,编译单独模块的办法。

由于需要兼容一些存量的windowsXP用户,工作室仍在使用vs2010编译的Qt5.5.0静态链接版本。本文所做编译工作,基于已有该qt版本环境编译环境的前提。需要了解静态qt编译的朋友请移步:Qt备忘录之五:编译VS2010版Qt5静态链接库

0. 准备工作

0.1 编译过程需要使用Perl,可以从官网下载最新的版本(官网已不提供32位的安装包,只有64位的);如果希望用早一些的版本,点这里(链接:https://pan.baidu.com/s/1f5kttudCkBwmupSrnPsU4w,提取码:12tl)。

0.2 下载QtCharts源码。尽量使用与Qt主体版本一致的。目前github上能回退到的最早版本是5.6.0,实测不影响编译。

 

1. 编译

1.1 使用管理员权限启动“Visual Studio 命令提示(2010)”。

1.2 定位到QtCharts源码中,qtcharts.pro文件所在路径。

1.3 执行qmake。

为了方便行文,以下使用$$[QT_INSTALL_PATH]表示Qt环境的主路径。例如我的$$[QT_INSTALL_PATH]指向V:\sources\Lib2010\Qt5StaticLib,对应qmake.exe执行文件的完整路径为“V:\sources\Lib2010\Qt5StaticLib\bin\qmake.exe”,则执行以下指令:

[code lang="cpp" collapse="false"]
V:\sources\Lib2010\Qt5StaticLib\bin\qmake CONFIG+="debug_and_release build_all"
[/code]

其中:

-debug_and_release: 生成debug和release两个版本

-build_all:执行所有相关的编译工作

使用对应Qt版本的qmake

1.4 执行nmake。

这个过程可能会报缺少一些依赖,从Qt环境中找到相应的.lib文件,放到报错指向的位置即可。

nmake过程中报缺少依赖

1.5 执行nmake install。

生成的文件将会被复制Qt环境中。编译生成的文件将被放在以下4个路径:

  • $$[QT_INSTALL_PATH]\qml\QtCharts
  • $$[QT_INSTALL_PATH]\lib
  • $$[QT_INSTALL_PATH]\include\QtCharts
  • $$[QT_INSTALL_PATH]\mkspecs\modules

 

2. 迁移

2.1 修改部分生成文件的路径表述

在Qt环境中,使用环境变量$$[QT_INSTALL_LIBS]表示Qt环境的库路径,本文中相当$$[QT_INSTALL_PATH]\lib。需要将以下文件中的绝对路径V:\sources\Lib2010\Qt5StaticLib\lib修改为环境变量$$[QT_INSTALL_LIBS],并且移除重复项:

  • $$[QT_INSTALL_PATH]\lib\Qt5Charts.prl
  • $$[QT_INSTALL_PATH]\lib\Qt5Chartsd.prl
  • $$[QT_INSTALL_PATH]\qml\QtCharts\qtchartsqml2.prl
  • $$[QT_INSTALL_PATH]\qml\QtCharts\qtchartsqml2d.prl

2.2 文件分发

将以下文件夹及包含的所有文件拷贝到其他电脑相同Qt环境的对应路径下:

  • $$[QT_INSTALL_PATH]\qml\QtCharts
  • $$[QT_INSTALL_PATH]\include\QtCharts

将以下文件拷贝到其他电脑相同Qt环境的对应路径下:

  • $$[QT_INSTALL_PATH]\lib\Qt5Charts.lib
  • $$[QT_INSTALL_PATH]\lib\Qt5Charts.prl
  • $$[QT_INSTALL_PATH]\lib\Qt5Chartsd.lib
  • $$[QT_INSTALL_PATH]\lib\Qt5Chartsd.prl
  • $$[QT_INSTALL_PATH]\mkspecs\modules\qt_lib_charts.pri
  • $$[QT_INSTALL_PATH]\mkspecs\modules\qt_lib_charts_private.pri

3. 总结

编译qt独立模块的大致流程:

  • qmake 模块.pro
  • nmake,可能需要补足依赖
  • nmake install
  • 修改生成的.prl文件中的绝对路径为依赖环境变量的相对路径

 

参考文章:

QT5.5+VS2013编译安装QtCharts

二零二一年四月十一日

顾毅写于厦门