Qt程序打包发布方法(使用官方提供的windeployqt工具)

本文介绍如何使用Qt官方提供的windeployqt工具进行Qt程序的打包发布。包括QtWidgetsApplication和QtQuickApplication两种类型的应用程序发布流程及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



Qt程序打包发布方法(使用官方提供的windeployqt工具)

转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group


Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。
以官方 Qt 5.4.0+MinGW 开发环境为例,windeployqt工具在 %QTDIR%\Qt5.4.0\5.4\mingw491_32\bin 目录下,其中 QTDIR 是 Qt 的安装目录,是环境变量。

在集成开发环境 QtCreator 中可选择 “Qt Widgets Application” 或 “Qt Quick Application” 两种方式生成图形界面应用程序。

下面分别介绍这两种方式创建应用的发布方式。


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

生成的程序运行正常之后,找到项目的生成目录,比如 项目源码路径:C:\QtPros\hellomw\ 。
它的项目生成目录是 C:\QtPros\build-hellomw-Desktop_Qt_5_4_0_MinGW_32bit-Release\ 。
进入这个文件夹,在进入它的子文件夹 release 里面,找到 hellomw.exe,将这个exe 复制到一个新的单独的文件夹里用于发布,比如存到 D:\hellomw\ 文件夹里面。

然后从开始菜单打开 Qt 命令行,输入命令:cd /d D:\hellomw
然后使用 windeployqt 工具命令:windeployqt hellomw.exe


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


把 D:\hellomw 文件夹 打包就可以发布了,不用自己一个个找 dll 文件了。D:\hellomw 文件夹里的qm文件是多国语言翻译文件,不需要可以删了,其他的都保留。


2. Qt Quick Application

首先用 QtCreator 新建一个 Qt Quick Application 项目,直接用默认的项目模版,点击下一步生成项目,项目名字假定是 helloqml。
然后以 Release 方式编译生成 exe 程序:


然后找到项目的构建目录,比如项目源码目录 C:\QtPros\helloqml 。
它的构建目录是:C:\QtPros\build-helloqml-Desktop_Qt_5_4_0_MinGW_32bit-Release\ 。
进入这个目录,再进入 release 子文件夹,找到 helloqml.exe ,复制到一个新的单独的文件夹里面,比如 D:\helloqml\ 文件夹里面。

然后从开始菜单打开 Qt 命令行,进入D:\helloqml\文件夹:cd /d D:\helloqml
然后使用 windeployqt 工具命令:windeployqt helloqml.exe --qmldir C:\Qt\Qt5.4.0\5.4\mingw491_32\qml


注意不要跟完全一样照抄上条命令!--qmldir 是指出 Qt 库里面的 qml 文件夹位置,上面命令里 C:\Qt\Qt5.4.0 是 Qt 官方开发环境安装的文件夹,C:\Qt\Qt5.4.0\5.4\mingw491_32 是Qt类库的目录(QTDIR),因此使用的 --qmldir 后面写的是 C:\Qt\Qt5.4.0\5.4\mingw491_32\qml ,读者Qt环境安装路径不一样,要根据实际情况修改!

然后可以看到 D:\helloqml 文件夹里有一大堆文件,就是 QtQuick程序需要的依赖文件。将整个 D:\helloqml 文件夹 打包就可以发布出去,在别的电脑上使用。

这个 D:\helloqml 文件夹里的东西很多,看不懂就不要删,老老实实打包发布就行了。


上面是最简单的程序发布,实际复杂程序可能还带一些图片文件、数据库文件、配置文件之类的,可以按自己需要添加这些文件到发布文件夹里面。


### 回答1: set_multicycle_path是一种时序约束,在FPGA和ASIC设计中广泛使用。它允许在时序路径上设置一个或多个时钟周期的延迟,以解决在时序分析时可能出现的一些问题。 当一个时序路径比其他路径更长时,它可能需要更多的时钟周期才能到达目标寄存器。 如果没有设置multicycle约束,时序分析可能会认为该路径无法满足其限制,从而导致设计失败。设置multicycle路径允许设计人员通过允许路径在时钟周期中存在延迟来解决这个问题,从而提高设计的可靠性。 需要注意的是,设置multicycle路径可能会对设计的性能产生一定的影响。因此,在使用该约束时,需要仔细考虑延迟的数量和位置,以确保设计仍能满足其性能要求。 ### 回答2: set_multicycle_path是在时序设计中常用的一个命令,其作用是定义某个时钟域下,某些时序路径的最小传播时间要大于一个时钟周期。set_multicycle_path命令是在时序约束中使用的,其语法如下: set_multicycle_path -setup|-hold|-both -from <startpoint> -to <endpoint> [N] 其中,-setup表示该路径是基于setup时间约束的,-hold表示该路径是基于hold时间约束的,-both表示同一路径即要求满足setup要求,也要求满足hold要求。-from和-to分别表示路径起点和终点。N为正整数,表示路径的传播时间至少要比时钟周期多N倍。 多周期约束在时序设计中非常重要,主要应用在以下的场景中: 1. 在时序迭代过程中,需要对部分时序路径进行暂时性调宽。可以使用set_multicycle_path命令,将某条时序路径的最小传播时间拉长一些,以避免潜在的时序故障。 2. 在设计中,时钟频率非常高,芯片功能复杂,可能会有很多时序路径因为逻辑和导线长度的限制,并不能满足单周期时序约束。此时就需要使用多周期约束命令来松弛时序约束,使设计更加容易达到时序约束。 3. 在时钟域划分比较复杂的时候,需要使用多周期约束命令来定义某些时序路径在时钟域之间传输时的最小传播时间。 总之,set_multicycle_path命令在时序约束中有着非常重要的作用,其使用方法需要遵循规范,针对具体的设计情况进行设置。只有合理使用多周期约束命令,才能保证设计的稳定性和性能。 ### 回答3: set_multicycle_path是一个IP核构建工具,它用于设置多时钟跨越路径,以使时序逻辑电路正确运行。其主要作用是在设计采用了多个时钟的情况下,保证异步时序电路的正确性。 多时钟异步系统中,来自不同时钟域的数据在不同的时钟周期内更新,如果异步时序电路中没有按照正确的路径进行时序控制,则可能出现元件与外部时钟之间出现多次边沿跨越,导致出现逻辑错误,从而可能导致系统的不可靠性。 set_multicycle_path可以用于解决这种问题,它将一个时序路径定义为多周期路径,这样就能够让信号在多个时钟周期内完成传输,保证信号的正确性和时序器件的正确运行。 在使用set_multicycle_path时,首先需要确定哪些信号是多周期路径的一部分,然后设置合适的寄存器或DMA控制器的时钟延迟,以便使信号在多个时钟周期中完成传输。 在设置multicycle_path时,还需要注意一些细节。首先是确保不能设置不可达路径、互锁路径和环路路径等,不然容易导致逻辑错误;其次是在设置多周期路径时,必须在源时钟域和目标时钟域之间设置同步器,保证信号的稳定和正确;最后,为了避免过多的时钟延迟,应当设置尽可能少的多周期路径。 总之,set_multicycle_path是一个非常重要的IP核构建工具,它可以帮助设计人员解决多时钟异步系统中的时序问题,确保系统的正确性和可靠性。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值