掌握Qt构造系统(二)软件部署

1. 前言

软件部署是指将软件项目本身,包括可执行文件、依赖库、配置文件、用户手册、帮助文档等进行收集、打包、安装、配置、发布的过程,是软件开发的一个重要环节。

Qt为开发者提供了软件部署的相关工具,使用这些工具可以便捷、快速地完成软件部署工作。

2. 部署工具与流程

2.1 使用qmake部署命令进行自定义部署

qmake提供的部署命令是INSTALLS命令。其官方描述见:

https://doc.qt.io/qt-5/qmake-variable-reference.html#installs

INSTALL命令最基本的功能,就是将多个文件或文件夹拷贝到指定路径下,通常用来做自定义部署。

下面以部署配置文件config.ini为例,讲解INSTALL命令的用法。

2.1.1 编写部署指令

现欲将 项目目录/config/config.ini 拷贝到 项目目录/bin 文件夹下,可通过在.pro项目文件中添加以下安装部署指令:

config.file=$$PWD/config/config.ini
config.path=$$PWD/bin
INSTALL += config

代码解释:

config为安装变量,名字可以随便取。安装变量本质上是一个结构体。结构体中的成员字段名是固定的,常用的字段名有:

字段描述
files用于指定需要拷贝的源文件路径列表,路径间使用空格分隔,含有空格的路径需要使用双引号包围。
path用于指定将源文件拷贝到何处,即指定目标文件夹。
extra用于指定在文件拷贝前,需要执行的命令,即额外命令。

所以:

  • 第一句指令用于指定需要拷贝的文件源路径。
  • 第二句指令用于指定拷贝的目标文件夹。
  • 第三句指令用于将新建的安装变量添加到安装变量集合中。安装变量集合中的所有安装变量在部署时均会被执行安装。

2.1.2 添加部署步骤

在添加安装变量以后,还需要在Qt Creator中添加部署步骤。只有添加了部署步骤,部署变量才能被执行,否则部署变量将被忽略。

在Run(运行配置)界面,点击 “添加Deploy步骤” 按钮,在弹出的下拉菜单中选择 “Make” 菜单项,如下所示:

添加Deploy步骤

选择Make菜单项后,出现的界面是Make参数配置界面,我们需要在 “Make arguments” 一行,添加 “install” 作为参数,如下图所示:

添加Make install参数

添加完install参数后,即完成了部署步骤的添加。

图中重命名按钮,可以用来对当前的部署配置(Deploy Configuration)进行重命名,为了便于识别,一般将部署配置重命名为中文。

2.1.3 执行部署

在以上安装指令及部署步骤都配置完成以后,我们就可以执行部署了。直接在项目上右键,在菜单中选择 “部署” 菜单项,即可执行部署步骤。如下图所示:

执行部署

如果我们没有添加部署步骤,“部署” 菜单项就是灰色的且无法选择。

除了直接执行部署操作外,我们在Qt Creator中运行、调试程序的时候,Qt Creator默认会自动执行 构建+部署 的步骤。这个行为是可以配置的。在Qt Creator中,依次选择 “工具”->“选项” 菜单,打开 “选项” 界面,如下图所示:

配置构建和部署选项

“构建和运行” 选项页中,由红色框标注出的两个配置项,正是用来配置程序运行前,默认的构建和部署行为的。

除了可以通过修改配置选项,设置/取消运行程序前的自动部署,我们还可以通过创建两个不同的部署配置来实现设置/取消运行程序前的自动部署。如下图所示,添加新的部署配置:

添加部署配置

在新的部署配置中,不要添加任何部署步骤,即保持原样即可。如下图所示:

添加空的部署配置

这里我们将新增的空部署配置命名为 “不部署”

新建好部署配置后,点击左下角的 项目配置切换按钮,可以选择两种不同的部署配置,根据需要选择即可。如下图所示:

项目配置选择

这样一来,选择 “部署” 配置,即启用运行前自动部署;选择 “不部署” 配置,即取消运行前自动部署。

2.1.4 最佳实践

以上是使用qmake部署命令进行自定义部署的方法,在软件开发中非常常用。除了以上命令,qmake还支持添加自定义目标,如有需要可自行查阅Qt帮助文档。

需要提及的是,在.pro中编写部署命令,不是在软件开发完成后才进行的,而是应该在整个软件开发过程中不断更新完善的。如果仅仅是在软件开发即将结束,需要进行软件部署发布的时候才启动部署指令的编写,由于存在各种复杂因素(依赖复杂度、开发人员调动、需求改动等),确定程序完整依赖将非常困难,编写部署命令的难度也会大大增加。

软件开发是一个动态完善的过程,很多工作都是随着软件开发同时进行的。通过不断迭代,能够有效降低软件风险,提高软件质量。

2.2 使用windeployqt.exe部署平台运行库

关于windeployqt.exe的使用,在另外一篇文章中有详细讲解:《windeployqt.exe的使用与避坑(windows平台)》

这里需要说明几点:

  • 和上面使用部署指令进行自定义部署不同,windeployqt.exe是用来自动部署Qt运行库、VS运行库等平台依赖的,但如果想要得到完整部署的程序,需要将两个方法结合使用。

  • 可以将windeployqt.exe的部署指令编写为批处理脚本,按照上一节的方法,添加到Qt Creator的部署配置中,这样就不用每次手动的去通过命令行执行部署了。

关于windeployqt.exe的使用,这里就不再赘述。

3. 结语

两种部署方式不是二选一的,而是应该全部掌握,结合使用。

当然实际的部署环境十分复杂,程序可能会出现各种各样的无法启动、运行崩溃的问题。这时候我们就要考虑运行库的位数、系统版本等等因素,并借助其他工具(如DependencyWalker)综合排查。总之,关于部署的问题还有很多,我们会在以后的文章中不断完善解决方案,敬请关注。


本文原创发布于 Qt未来工程师。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撬动未来的支点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值