zoukankan      html  css  js  c++  java
  • Qt 编程指南 9 软件打包

        Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑 里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。

    平台

    使用此一样例说明所有打包过程

    • VS2013
    • QT
    • Opencv2.4.1.3(64位)

      集成开发环境 QtCreator 目前生成图形界面程序 exe 大致可以分为两类:
      Qt Widgets Application 和 Qt Quick Application。
    下面分别介绍这两类exe 的发布方式。

    1、Qt Widgets Application可执行程序发布方式


    1.1 用 QtCreator 新建一个 Qt Widgets Application 项目,直接用默认的 QMainWindow 程序就可以了,项目名字假定是 Qt_Window。
    然后以 Release 方式编译生成 exe 程序:

    然后在工程目录生成的Release 文件夹下找到生成的 Qt_Window.exe

    复制到桌面文件夹EXE下(随意选取路径)

    1.2 打开命令行

    进入刚才创建的EXE文件夹目录下

    cd DesktopEXE
    

    然后使用windeployqt自动生成链接库工具, 执行

    windeployqt Qt_Window.exe
    

    之后看到,EXE文件夹下自动生成各种QT库文件

    文件夹里看到 windeployqt 工具自动复制的插件文件夹
    和 dll文件、qm文件。这时候得到的就完整的 exe 程序发布集合,依赖关系都解决好了。

    2 如果还依赖了第三方库文件(例如Opencv)需要手动复制进来。

    • windeployqt 是QT自带的工具,所以只能访问QT本身路径包含的库文件,所以Opencv甚至VS2013的基本库要自己添加。

    2.1:下载并安装 process explorer软件,因为可以用它来查看Qt_Window.exe用到了那些第三方库的dll.

    2.2:打开 process explorer, 将菜单 View -> Lower Plane View -> Dlls  勾选上。再运行Qt_Window.exe。就可以在process explorer中查看第三方库的dll.如下图:

    在其中我们发现 依赖的Opencv库有三个

    双击第三方依赖库,弹出如下图对话框,点击Explore, 将相应的 dll 复制粘贴到 EXE文件夹中。完成所有第三方库的复制

    将这三个库复制到EXE文件夹下

      之后整体就可以复制到另外一台电脑,成功运行。

    (默认另外一台电脑需要安装好VS2013,不然还要像添加opencv库一样,把VS调用的基本库添加进去)

    如下图中VS2013调用的库

     3 如果还有其他QT和VS2013以外的依赖库,类似第二步加添。

    第二种界面EXE生成暂时用不到,待续

    参看:http://tieba.baidu.com/p/3730103947?pn=1

    4 生成安装文件

    软件下载

    https://www.sogou.com/sogou?query=setup2go&pid=sogou-wsse-91e50fe1e39af286

     教程参考:

    http://www.uzzf.com/news/31/1021_1.html

    安装设置默认

    系统需求设置最小安装空间

    插入打包好的exe文件夹

     

    设置快捷方式

    选择要生成的快捷方式文件

    设置快捷方式的图标

    没有设置注册表

    闪图自定义设置

    外部工具 无设置

     初始化参数文件 无设置

    最后生成

    设置输出路径+图标+安装包名字,点击建立

     生成安装文件

    安装测试

    安装成功

    运行

     卸载

  • 相关阅读:
    [Objective-C] Block实现回调和简单的学习思考
    [iOS] 输入框高度随输入内容变化
    [iOS] UICollectionView初始化滚动到中间的bug
    [iOS] UICollectionView实现图片水平滚动
    [Objective-C] id类型和instancetype类型
    [iOS]圆形进度条及计时功能
    [Java][读书笔记]多线程编程
    Flutter 不一样的跨平台解决方案
    ONLYOFFICE连接数20个限制的由来
    Android:Gradle sync failed: Another 'refresh project' task is currently running for the project
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/7499896.html
Copyright © 2011-2022 走看看