Qt备忘录之六:编译独立Qt模块
- 再创世纪·代码厨房
- 2021-04-11
- 1082热度
- 0评论
最近有个项目打算用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:执行所有相关的编译工作
1.4 执行nmake。
这个过程可能会报缺少一些依赖,从Qt环境中找到相应的.lib文件,放到报错指向的位置即可。
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文件中的绝对路径为依赖环境变量的相对路径
参考文章:
二零二一年四月十一日
顾毅写于厦门