【Qt】之【Linux】Qt 5.12.8 单独编译 qtvirtualkeyboard 模块源码
前言
背景
使用系统自带的(不是自己下载编译的)Qt 5.12.8 运行Qt Creator 项目
但是系统自带的Qt缺少一些库,比如本文提到的 qtvirtualkeyboard 库
因此需要编译同版本的模块库文件
编译平台
Mac Mini 下的VMware Fusion虚拟机 — aarch64环境下直接编译源码,无需交叉编译
默认的qt版本 === 5.12.8
步骤
官网下载Qt 5.12.8 源码压缩包并解压 qt-everywhere-src-5.12.8
编译整个 Qt 源码
- 源码目录同级目录下创建
build5.12.8
(存放编译过程中文件)、linux_aarch64
(存放编译后的文件)文件夹,创建配置脚本文件autoConfigure.sh
:
../qt-everywhere-src-5.12.8/configure \
-prefix ../linux_aarch64 \
-nomake examples \
-nomake tests \
-skip qtwebengine \
-skip qtcharts \
-skip qt3d \
-skip qtdeclarative \
-skip qtquickcontrols \
-skip qtquickcontrols2 \
-skip qtmultimedia \
-skip qtwebsockets \
-skip qtlocation \
-skip qtsensors \
-skip qttools \
-skip qttranslations \
-v
- 执行脚本,进行编译安装
sudo chmod +x autoConfigure.sh
./autoConfigure.sh
make
sudo make install
4.查看 linux_aarch64 目录
至此按理说 qt 模块除了 skip 的几个应该都编译成功,但是查看时并没有发现 qtvirtualkeyboard 相关的文件,且在configure 阶段就没有配置出来。
于是决定单独编译 qtvirtualkeyboard 模块源码:
单独编译 qtvirtualkeyboard 模块
-
进入 Qt 源码目录,找到 qtvirtualkeyboard
文件夹进去
-
执行
:没有特意指明编译后的文件路径,因此会放在系统设置的默认Qt版本目录下
qmake qtvirtualkeyboard.pro
make
sudo make install
过程中会报错,有关于 QtGUI 和 QtCore 的,
原因是 qtvirtualkeyboard 源码调用依赖到这两个模块的头文件,但是前文提到系统自带的 Qt 缺少一些库(文件,文件夹),因此编译源码时会报错。
(推测前面编译整个 Qt 源码时没有编译出 qtvirtualkeyboard 模块也是因为依赖的库文件不存在,因此跳过了)
- 移动第一阶段编译 Qt 源码后的两个模块的相关private文件
sudo cp -r /home/hannah/Public/qt5/qt5.12.8-1/linux_aarch64/include/QtGui/5.12.8 /usr/include/aarch64-linux-gnu/qt5/QtGui/
sudo cp -r /home/hannah/Public/qt5/qt5.12.8-1/linux_aarch64/include/QtCore/5.12.8/ /usr/include/aarch64-linux-gnu/qt5/QtCore/
- 重复步骤2命令,编译安装成功!