文档章节

Qt程序各个平台打包发布及安装程序大全

shzwork
 shzwork
发布于 09/19 06:41
字数 1473
阅读 33
收藏 1

本文链接:https://blog.csdn.net/zhengtianzuo06/article/details/78468111
通用:
1.准备图标
图标可以直接使用一般格式的图片制作, 比如jpg, png等
推荐使用Photoshop制作原始图


推荐使用IconWorkshop制作图标, 非常的方便


Windows和Linux的程序图标, 制作ico格式图标


MacOS制作icns格式图标


Android和IOS直接使用Png

2.准备License文件, readme说明等

程序发布:
1.Windows:

准备程序版权版本等信息

Qt中图标及版本信息的设置, 可以参考我之前的发布项目例子
QmlVersionInfo

Release编译:

选择项目


选择Release编译


生成好的目录


清除多余的中间文件

qt提供了专门的部署工具, windeployqt:

Usage: windeployqt [options] [files]
Qt Deploy Tool 5.9.0

The simplest way to use windeployqt is to add the bin directory of your Qt
installation (e.g. <QT_DIR\bin>) to the PATH variable and then run:
  windeployqt <path-to-app-binary>
If ICU, ANGLE, etc. are not in the bin directory, they need to be in the PATH
variable. If your application uses Qt Quick, run:
  windeployqt --qmldir <path-to-app-qml-files> <path-to-app-binary>

Options:
  -?, -h, --help            Displays this help.
  -v, --version             Displays version information.
  --dir <directory>         Use directory instead of binary directory.
  --libdir <path>           Copy libraries to path.
  --plugindir <path>        Copy plugins to path.
  --debug                   Assume debug binaries.
  --release                 Assume release binaries.
  --pdb                     Deploy .pdb files (MSVC).
  --force                   Force updating files.
  --dry-run                 Simulation mode. Behave normally, but do not
                            copy/update any files.
  --no-patchqt              Do not patch the Qt5Core library.
  --no-plugins              Skip plugin deployment.
  --no-libraries            Skip library deployment.
  --qmldir <directory>      Scan for QML-imports starting from directory.
  --no-quick-import         Skip deployment of Qt Quick imports.
  --no-translations         Skip deployment of translations.
  --no-system-d3d-compiler  Skip deployment of the system D3D compiler.
  --compiler-runtime        Deploy compiler runtime (Desktop only).
  --no-compiler-runtime     Do not deploy compiler runtime (Desktop only).
  --webkit2                 Deployment of WebKit2 (web process).
  --no-webkit2              Skip deployment of WebKit2.
  --json                    Print to stdout in JSON format.
  --angle                   Force deployment of ANGLE.
  --no-angle                Disable deployment of ANGLE.
  --no-opengl-sw            Do not deploy the software rasterizer library.
  --list <option>           Print only the names of the files copied.
                            Available options:
                             source:   absolute path of the source files
                             target:   absolute path of the target files
                             relative: paths of the target files, relative
                                       to the target directory
                             mapping:  outputs the source and the relative
                                       target, suitable for use within an
                                       Appx mapping file
  --verbose <level>         Verbose level.

Qt libraries can be added by passing their name (-xml) or removed by passing
the name prepended by --no- (--no-xml). Available libraries:
bluetooth concurrent core declarative designer designercomponents
enginio gui qthelp multimedia multimediawidgets multimediaquick network nfc
opengl positioning printsupport qml qmltooling quick quickparticles quickwidgets
script scripttools sensors serialport sql svg test webkit webkitwidgets
websockets widgets winextras xml xmlpatterns webenginecore webengine
webenginewidgets 3dcore 3drenderer 3dquick 3dquickrenderer 3dinput geoservices
webchannel texttospeech serialbus

Arguments:
  [files]                   Binaries or directory containing the binary.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
使用非常的方便, 命令行cd到程序的生成目录

windeployqt.exe --qmldir C:\release\QmlVersionInfo QmlVersionInfo.exe

这里演示的是qml程序的打包, 所以带有 --qmldir 参数 内容是指向项目中qml的文件夹路径, 这样可以让Qt识别运行项目里qml文件需要的QtQuick库.

生成好的目录情况就是这样, 如果程序还需要一些动态库, 插件, 需要自己加入进去.
然后基本就可以使用安装程序进行打包了.

2.Android:

准备程序版权版本等信息


选择项目


首先在Build Android APK中创建模板


这里可以填写App包名, 程序版本号, SDK版本号, 程序名称等
点击下面的三个小方块按钮, 分别设置不同分辨率的程序图标


选择Release编译
Qt提供了专门的部署工具, androiddeployqt: 编译时自动调用
在生成目录的android-build\bin下可以看到已经生成好的QtApp-debug.apk

3.IOS:
4.MacOS:
5.Linux:

Release编译:

选择项目


选择Release编译


生成好的目录

这个时候需要解决依赖库的问题, 我们使用linuxdeployqt
GitHub地址: linuxdeployqt
下载源码 并解压使用Qt Creator编译Release版本即可, 生成的应用程序拷贝到bin目录下
sudo mv linuxdeployqt /usr/local/bin

下载安装patchelf patchelf-0.9.tar.gz

设置Qt的环境变量:

sudo gedit ~/.bashrc
1
加上

export PATH=/opt/Qt5.9.2/5.9.2/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/opt/Qt5.9.2/5.9.2/gcc_64/lib:$LD_LIBRARY_PATH
1
2
让其生效

source ~/.bashrc
1
然后cd到项目生成位置
使用linuxdeployqt生成依赖库, 命令格式:

Usage: linuxdeployqt app-binary [options]

Options:
   -verbose=<0-3>      : 0 = no output, 1 = error/warning (default), 2 = normal, 3 = debug
   -no-plugins         : Skip plugin deployment
   -appimage           : Create an AppImage
   -no-strip           : Don't run 'strip' on the binaries
   -bundle-non-qt-libs : Also bundle non-core, non-Qt libraries
   -executable=<path>  : Let the given executable use the deployed libraries too
   -qmldir=<path>      : Scan for QML imports to bundle from the given directory, determined by Qt's qmlimportscanner
   -always-overwrite   : Copy files even if the target file exists
   -qmake=<path>       : The qmake executable to use
   -no-translations    : Skip deployment of translations

linuxdeployqt takes an application as input and makes it
self-contained by copying in the Qt libraries and plugins that
the application uses.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
例如:
linuxdeployqt QmlVersionInfo -qmldir=/home/tianzuo/Programming/WorkSpace/QmlVersionInfo

生成好的目录情况就是这样, 如果程序还需要一些动态库, 插件, 需要自己加入进去.
然后基本就可以使用安装程序进行打包了.

安装程序制作:
1.Windows:

创建桌面和开始菜单快捷方式:
参考我之前写的博文: Qt创建桌面和开始菜单快捷方式

2.Android:
3.IOS:
4.MacOS:
5.Linux:

创建桌面快捷方式:
这里以Ubuntu为背景介绍下,
新建一个*.desktop文件, 内容如下:

[Desktop Entry]
Categories=Development;
Comment[zh_CN]=
Comment=
Exec=/home/tianzuo/Programming/WorkSpace/QmlVersionInfo/QmlVersionInfo
GenericName[zh_CN]=Qt
GenericName=Qt
Icon=/home/tianzuo/Programming/WorkSpace/QmlVersionInfo/logo.ico
MimeType=
Name[zh_CN]=QmlVersionInfo
Name=QmlVersionInfo
Path=
StartupNotify=true
Terminal=false
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=owen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
未完待续…
————————————————
版权声明:本文为CSDN博主「zhengtianzuo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhengtianzuo06/article/details/78468111

本文转载自:https://blog.csdn.net/zhengtianzuo06/article/details/78468111

shzwork
粉丝 15
博文 827
码字总数 18401
作品 0
厦门
私信 提问
Windows如何打包Qt程序

Windows如何打包Qt程序 很多Qt爱好者想发布自己的Qt软件,但却发现在其他没有安装Qt SDK的机器上无法运行,这就是本文想要说明的问题。现在网上大部分软件都要发布自己开发的应用程序,都会打...

晨曦之光
2012/05/24
3.4K
1
如何打包发布基于Qt4 Windows的软件

先从Windows平台开始。 Windows平台下的软件发布最主要的需求是想办法找到在你的发布中应该包含哪些必须的文件, 同时要保证应用程序运行时能正确找到这些文件, 发布基于Qt的软件也是同样的...

barsoom
2012/11/28
299
0
Qt之打包发布(NSIS详解)

发布方式 Qt发布的时候,通常使用两种方式: 1、利用向导制作安装包:

china008
2014/05/12
893
0
QT5.x应用在Mac OS X和Windows平台的发布过程

QT是一款非常牛逼的跨平台开发工具,目前可以开发Mac OS X、Windows、Linux、Android、iOS等平台的App。对于Android和iOS平台,发布相对容易,例如,Android平台是生成apk文件上传到Android...

androidguy
2018/06/29
0
0
Qt 安装包制作框架--Qt Installer Framework

Qt Installer Framework 是 Qt 官方提供的安装包制作框架。 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布。这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执...

Force武装卫队
2015/04/08
8.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
27分钟前
4
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
27分钟前
4
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
36分钟前
4
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
40分钟前
4
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部