当前位置: 首页 > news >正文

【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 源码

  1. 源码目录同级目录下创建 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

在这里插入图片描述

  1. 执行脚本,进行编译安装
sudo chmod +x autoConfigure.sh
./autoConfigure.sh
make
sudo make install

4.查看 linux_aarch64 目录
在这里插入图片描述

至此按理说 qt 模块除了 skip 的几个应该都编译成功,但是查看时并没有发现 qtvirtualkeyboard 相关的文件,且在configure 阶段就没有配置出来。

于是决定单独编译 qtvirtualkeyboard 模块源码:

单独编译 qtvirtualkeyboard 模块

  1. 进入 Qt 源码目录,找到 qtvirtualkeyboard
    文件夹进去
    在这里插入图片描述

  2. 执行
    :没有特意指明编译后的文件路径,因此会放在系统设置的默认Qt版本目录下

qmake qtvirtualkeyboard.pro
make
sudo make install

过程中会报错,有关于 QtGUI 和 QtCore 的,
原因是 qtvirtualkeyboard 源码调用依赖到这两个模块的头文件,但是前文提到系统自带的 Qt 缺少一些库(文件,文件夹),因此编译源码时会报错。
(推测前面编译整个 Qt 源码时没有编译出 qtvirtualkeyboard 模块也是因为依赖的库文件不存在,因此跳过了)

  1. 移动第一阶段编译 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/
  1. 重复步骤2命令,编译安装成功!

相关文章:

  • LangChain实践11-问答
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑩】
  • 深入解析iOS视频录制(二):自定义UI的实现
  • 伪装目标检测(Camouflaged Object Detection, COD)教程
  • Spring-GPT智谱清言AI项目(附源码)
  • Day48(补)【AI思考】-设计模式三大类型统一区分与记忆指南
  • 五、k8s:容忍 存储卷
  • B2B2C商城系统:如何利用大数据实现精准营销?
  • 内容中台驱动智能化推荐系统的精准服务创新
  • [笔记.AI]大模型的蒸馏、剪枝、量化 | 模型压缩 | 作用与意义
  • Python Spider
  • jenkins【Choice Parameter】来配置发布到不同环境的目录
  • Mongo导入导出详解
  • 【弹性计算】IaaS 和 PaaS 类计算产品
  • C# dynamic 关键字 使用详解
  • wps中的js开发
  • STM32 看门狗
  • mac相关命令
  • Linux环境Docker使用代理推拉镜像
  • DeepSeek R1 模型在架构上的优势
  • 奥园集团将召开债券持有人会议,拟调整“H20奥园2”本息兑付方案
  • 城管给商户培训英语、政银企合作纾困,上海街镇这样优化营商环境
  • 美联储主席:关税“远超预期”,美联储实现目标的进程或被推迟至明年
  • 上海一中院一审公开开庭审理被告人胡欣受贿案
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 娱见 | 为了撕番而脱粉,内娱粉丝为何如此在乎番位