IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Qt 应用程序发布 -> 正文阅读

[系统运维]Qt 应用程序发布

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

简介

说到 Qt 应用程序的发布,首先需要了解程序的编译。Qt 程序的编译分为静态编译(static)和动态编译(shared)。静态编译的特点是只生成一个可执行文件,可直接运行程序,不需要依赖库,内存占用小,但是要完成静态编译的门槛比较高,需要自己下载 Qt 源代码去配置去编译,而且有些 QML 的库是无法静态编译的;而动态编译就是我们最常用的方式,生成一个可执行文件,此文件的运行需要很多 Qt 的库文件和系统的库文件,甚至一些第三方的库,内存占用率比较高,哪怕只是一个 hello world 的程序都会带有几十兆的依赖库。

我们对动态编译的程序进行发布,其实就是找到程序的所有依赖库,把这些库文件和应用程序放在一个目录下,即可实现目的。Qt 提供了一个打包工具,叫做 deployqt,可以将应用程序所依赖的库文件都提取出来,并且支持跨平台。在 Windows 系统叫 windeployqt,在 Linux 系统叫 linuxdeployqt,在 Mac 下叫 macdeployqt。这里以 Windows 系统为例

配置环境变量

首先我们要知道 windeployqt.exe 是在构件套件的 bin 目录下的,所以每一个构件套件的 bin 目录下都会有一个,如图所示:
在这里插入图片描述
在这里插入图片描述
既然每个套件下都有,那么用哪个就会存在争议。所以最好的办法就是你用了那个编译,就把对应的 bin 目录添加到环境变量,确保打包的时候能够找到正确的依赖库

Widget 程序和 Quick 程序的区别

工具准备好之后就可以开始使用了,具体步骤如下:

  1. 新建一个空的文件夹,比如 D:\test
  2. 把编译生成的 exe 文件拷贝到刚才创建的文件夹下
  3. 打开命令行,输入 cd /d D:\test
  4. 如果是 Widget 程序,输入 windeployqt applicationName.exe会自动把 Qt 的依赖库拷贝到 test 目录
  5. 如果是 Quick 程序,需要多添加一个 qmldir,例如windeployqt applicationName.exe --qmldir D:\Qt\Qt5.12.8\5.12.8\msvc2017_64\qml会自动把 Qt 的依赖库拷贝到 test 目录
  6. 再把程序运行需要的第三方库拷贝到 test 目录,就大功告成啦

QML 程序打包完之后无法运行的问题

QML 的程序有时候打包完之后会出现无法运行的情况,界面都无法打开。这是因为使用了一些特定的模块,比如 QtCharts、QtDataVisualization 等等,这里不得不提一下 windeployqt 的坑了,只会把基础的依赖库自动拷贝出来,一些从商业版免费开放出来的库就不会自动拷贝,呵呵!

这里介绍一个好的方法,就是在 pro 文件中添加一行代码 CONFIG += console
效果就是让程序的日志在命令行输出,这样如果缺少了依赖库,就能看到提示了,然后再根据提示去 Qt 的目录下找到对应的库文件拷贝到 test 目录即可

脚本分享

这是博主自己写的脚本,太懒了不想每次复制打命令

@echo off

md %USERPROFILE%\Desktop\test

copy .\build-ShineOptics_Interferometer-Desktop_Qt_5_12_8_MSVC2017_64bit-Release\Sirius-Pro.exe %USERPROFILE%\Desktop\test\

xcopy .\64_release\ %USERPROFILE%\Desktop\test\ /s /e /c /y /h /r

cd /d %USERPROFILE%\Desktop\test

windeployqt Sirius-Pro.exe --qmldir D:\Qt\Qt5.12.8\5.12.8\msvc2017_64\qml

步骤解析如下:

  1. 在用户桌面创建文件夹 test
  2. 把编译目录下生成的 exe 文件拷贝到 test 目录
  3. 把程序的所有第三方依赖库全部拷贝到 test 目录
  4. 切换到 test 目录下
  5. 使用 windeployqt 自动复制 Qt 的依赖库到 test目录,到此大功告成!
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:21:05  更:2021-09-01 12:22:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:40:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码