Qt打包含有第三方库的软件为应用程序——CQtDeployer

1.下载Dependencies并安装,File打开你要打包的exe文件,然后就会告诉你运行这个程序需要哪些dll库

  1. 下载CQtDeployer并安装

https://github.com/QuasarApp/CQtDeployer/releases

  1. 打开终端,cd到你的exe所在文件夹

笔者的路径是这个,那我就在终端运行这条指令 进入我的exe所在路径

bash 复制代码
cd /d "D:\mydocuments\Qt_project\DropletSubsystem0323\CQt"

然后运行下面的指令打包。注意里面的qmake.exe 、 cqtdeployer.exe、以及最后的文件夹的名字,都是我的工程的,你要根据你的实际路径替换这里,文件夹名字也要替换,你想让打包完的文件夹叫啥就是啥

bash 复制代码
"C:\Program Files\CQtDeployer\1.6\cqtdeployer.exe" -bin DropletSubsystem.exe -qmake "D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe" -targetDir "./DeployResult"
  1. 上面的步骤只打包qt需要的库,如果你的工程里有第三库,这个命令并不包含这些库在内,需要你先把这些第三方库的路径告诉它,它才可以帮你打包进去!!,这时,我们最开始使用dependences列出的dll库路径 就派上用场了,当然你要有lib库的话,这个路径也要告诉它。

比如,我的.pro文件里写的库路径是这样的

cpp 复制代码
INCLUDEPATH += "C:/Program Files/IVI Foundation/VISA/Win64/Include"

# 指向标准的 VISA 库文件目录
LIBS += -L"C:/Program Files (x86)/IVI Foundation/VISA/WinNT/Lib_x64/msc/"

# 链接导入库
LIBS += -lvisa64

INCLUDEPATH += "D:/mysql/mysql-connector-c++-8.0.33-winx64-debug/mysql-connector-c++-8.0.33-winx64/include/jdbc"


unix|win32: LIBS += -L$$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64/ -lmysqlcppconn -llibcrypto -llibssl

INCLUDEPATH += $$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64
DEPENDPATH += $$PWD/../../../../mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64

那我最终的包含所有库的打包命令就是这样的:

bash 复制代码
"C:\Program Files\CQtDeployer\1.6\cqtdeployer.exe" -bin DropletSubsystem.exe -qmake "D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\qmake.exe" -libDir "C:/Program Files/IVI Foundation/VISA/Win64/Include" -libDir "D:/mysql/mysql-connector-c++-8.0.33-winx64/mysql-connector-c++-8.0.33-winx64/lib64" -targetDir "./DeployResult" -deploySystem true

这条命令里,带引号的都是你电脑上相关文件的路径和你的文件夹名称,以及bin后面是你的exe名称,这些都是要替换成你实际的,其他字符就是命令本身的名称

-deploySystem true 参数值为 true 意思是 启用系统库部署

如果没有后面的true 会报错:Error: Missing argument

-libDir 后面跟的就是库路径,不管是动态库还是静态库。方便起见,可以把所有的库文件都放在一个文件夹里,然后运行这个命令一次性打包完成,就不用手动再添加库文件了。

  1. 打包完成以后,我们需要在一个没有开发环境的电脑上运行一下,这样才知道是不是缺东西,可以使用windows 沙盒来模拟这一步。

支持这个功能的系统:Windows 10 专业版/企业版/教育版(1903 或更高) 或 Windows 11 专业版/企业版/教育版

系统架构: 64位处理器(AMD64 或 ARM64)

在任务栏搜索框输入 打开或关闭 Windows 功能 ,打开 在弹出的列表中找到 Windows 沙盒 (SandBox)勾选它,点击"确定" 系统会搜索并安装所需文件,安装完成后重启电脑,或者在微软商店也可以安装,然后在任务栏搜索

就打开一个全新的虚拟windows系统,可以直接把打包好的文件夹放进去,然后运行exe程序,看是不是缺东西。

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++