GUI库Qt 6之三: 项目的发布
本文接着上一篇“Qt 6之二:项目的结构、资源文件的使用” https://blog.csdn.net/cnds123/article/details/130741807介绍,并使用其中的例子。
程序代码能正确编译运行,就可以考虑项目的发布了。
发布 Qt 程序需要考虑多种因素。您需要了解目标平台的要求,了解如何编译和打包程序,并能够管理其依赖项和发布版本。
Qt Creator将项目源文件和编译生成的文件进行了分类存放。初学者常常找不到生成的可执行文件.exe在哪儿。
在Qt Creator中,生成的可执行文件(.exe文件)默认会放在项目的构建目录中。构建目录的位置可以在Qt Creator的项目设置中进行配置。
构建和运行(Build & Run)目录
Qt Creator将项目源文件和编译生成的文件进行了分类存放。构建目录用于存放此项目在编译过程中生成的文件,例如数据库文件、可执行文件等。
查看或修改构建目录
在Qt Creator中查看或修改项目的构建目录,参见下图,按照以下步骤操作:
打开Qt Creator并加载你的项目。
在左侧面板中,选择“Projects(项目)” 图标(通常显示为一个扳手图标)。
在“项目”选项卡中,根据实际情况查看或修改构建目录。
保存更改后,下次构建时,项目将使用新的构建目录进行编译。
注意:修改构建目录会影响之前构建产物的存放位置,可能需要重新构建项目以确保之前的构建产物被更新。在某些情况下,可能需要执行清理操作(在顶部菜单栏上点击“构建”>“清理项目”),以防止因旧构建文件而导致的问题。
构建模式(构建版本)
Qt提供了三种不同的构建模式(构建版本):Debug、Profile和Release。这些模式涉及不同的编译选项和优化设置,用于满足开发过程中不同阶段的需求。
Debug(调试)模式:
Debug模式主要用于开发和调试应用程序。它使用额外的信息(如调试符号),使开发者能够更轻松地定位和解决代码问题。在Debug模式下,编译器通常不会执行任何优化操作,以确保代码的行为与预期一致。此配置下生成的可执行文件体积较大,运行速度较慢。而Debug模式下的项目可以结合调试器,在运行时进行断点调试、内存分析等操作。
Profile(性能分析)模式:
Profile模式类似于Debug模式,但包含了额外的性能分析工具(如性能计数器和跟踪器)。这些工具允许开发者检查应用程序的性能瓶颈和资源消耗。在Profile模式下,编译器可能会执行某些优化,以便更接近实际的运行环境。然而,这种模式仍然包含调试信息,因此可执行文件体积仍然较大。Profile模式适用于需要对代码进行性能分析和调整的场景。
Release(发布)模式:
Release模式用于准备应用程序的最终版本。在Release模式下,编译器将执行各种优化操作,以提高应用程序的执行速度和减小文件大小。这种模式下的可执行文件不包含调试信息,因此体积较小,运行速度较快。然而,由于缺少调试信息,使用调试器定位问题变得困难。Release模式通常用于生成可以分发给用户的应用程序版本。
在Qt Creator中,你可以从构建模式下拉菜单中选择需要的构建模式(通常位于左下角)。选择合适的模式后,点击“构建”图标进行编译。请注意,在切换构建模式时,确保对应的构建目录已被正确设置。
将想要发布的应用程序,使用release模式下编译,然后生成可执行文件。
使用Release模式进行编译
请注意,在使用Release模式编译应用程序时,确保你已正确设置了项目,并解决了所有编译警告和错误。
在Qt Creator中使用Release模式进行编译,请按照以下步骤操作:
打开Qt Creator并加载你的项目。
在左下角,找到构建模式切换器。它通常显示为一个下拉菜单,可以在Debug、Profile和Release模式之间切换。
从下拉菜单中选择“Release”模式。此时,Qt Creator将使用Release模式设置对项目进行编译。
若要开始编译,点击顶部工具栏上的绿色播放图标旁边的锤子图标(或者按快捷键Ctrl+B或Cmd+B,或从顶部菜单栏选择“构建”>“构建项目”)。
Qt Creator将使用Release模式进行编译。编译完成后,你可以在构建目录下的"release"子文件夹中找到生成的可执行文件。
在构建目录下的"release"子文件夹中找到生成的可执行文件,我这里是ch01.exe。到此,还不能使用,双击它运行会报错,往下看。
项目的发布
如何让上面ch01.exe让他人使用呢?先不要高兴太早,往下看。
使用QT Creator创建的项目,可以在QT Creator中启动运行,但在"release"子文件夹中双击ch01.exe,文件,却提示系统错误:
怎么办?往下看,手工建立一个文件夹如MyQt,将Qt安装目录下 6.2.4\mingw_64 (其中6.2.4是Qt版本号,据你的实际情况而定)文件夹中的bin文件夹和plugins文件夹复制到MyQt文件夹中,然后将ch01.exe复制到MyQt文件夹这的bin文件夹,就可以将MyQt文件夹给他人用了。其中ch01.exe可以改名。将这个文件夹发给一个没有安装过Qt 的电脑,也可以打开。不过这样发布包含的无用的文件较多,也不太专业。这样发布整个文件夹约200多M(虽然其中的ch01.exe很小)。
下面介绍使用Qt的windeployqt工具发布
windeployqt.exe是Qt自带的Windows平台发布工具,用于创建应用程序发布包,它可以自动为一个应用程序复制其运行所需的各种库文件、插件。官方介绍Qt for Windows - Deployment | Qt 6.5
在“开始”菜单中打开Qt命令行终端界面,参见下图:
【在Qt命令行终端中输入
windeployqt.exe -h
回车,可以查看命令帮助
】
在你认为合适的位置新建一个文件夹,将“release”文件夹下的.exe文件复制到新建的文件夹中,我这里在D:盘建立一个文件夹MyQtTest,将ch01.exe复制到该文件夹
命令行中输入
windeployqt 应用程序完整路径
我这里是
windeployqt D:\MyQtTest
回车即可执行发布命令,参见下图:
提示:如果应用程序路径中包含空格,需要用双引号将整个路径字符串包裹起来。
等待完成后,进入到应用程序目录可以看到,目录中增加了很多依赖库和数据文件。参见下图:
点击这个目录中你的.exe就可以直接运行了:
将这个文件夹发给一个没有安装过Qt 的电脑,看是否可以打开。若没问题就可以这样发布了。这样发布整个文件夹约50多M(虽然其中的ch01.exe很小)。
更进一步可以制作安装文件。有很多制作安装文件的软件,如Inno Setup 是一个免费的 Windows 安装程序制作软件,还可以使用官方的Qt Installer Framework工具Qt Installer Framework框架制作安装包。Qt提供的Qt Installer Framework是一组工具和实用程序,用于创建一次安装程序。
官方下载:https://download.qt.io/official_releases/qt-installer-framework/
官方文档:https://doc.qt.io/qtinstallerframework/index.html
注意,Qt 6及以后版本不再支持Windows 7。
在Qt6中,无论是使用qmake还是CMake构建项目,发布应用程序的基本步骤都是相似的,但具体的打包过程可能会有所不同。以下是发布Qt应用程序的一般步骤:
- 构建Release版本:
- 对于qmake,通常会在命令行中使用qmake和make(或在Windows上使用nmake或jom)来构建项目。
- 对于CMake,使用cmake命令来生成构建系统,然后使用cmake --build . --config Release来构建项目。
- 确保所有依赖都包含在内:
- Qt应用程序通常依赖于一些动态链接库(DLLs on Windows,.so files on Linux,或者.dylib files on macOS),这些库需要与应用程序一起分发。
- 使用Qt提供的windeployqt(Windows)、macdeployqt(macOS)或linuxdeployqt(Linux)工具可以帮助自动收集这些依赖。
- 打包应用程序:
- 创建一个安装程序或者压缩包,包括应用程序的可执行文件、依赖的库、资源文件等。
- 可以使用各种打包工具,如NSIS、Inno Setup、CPack等,来创建一个安装程序。
- 测试:
- 在目标系统上测试打包的应用程序,确保没有缺失的依赖,并且应用程序能够正常运行。
- 分发:
- 将打包好的应用程序上传到网站、应用商店或者通过其他渠道分发给用户。
具体到qmake和CMake,虽然构建步骤有所不同,但是一旦构建完成,后续的打包和分发步骤是类似的。主要区别在于构建系统生成的中间文件和目标文件可能会存放在不同的目录结构中,因此在使用打包工具时需要注意这些细节。
另外,CMake有一个与之集成的打包系统CPack,它可以简化打包过程。如果你使用CMake构建项目,可以考虑使用CPack来生成安装程序或者压缩包。
总之,发布流程的核心是确保所有必要的文件都被包括在内,并且在目标系统上能够正确运行。无论使用qmake还是CMake,都需要对打包和分发过程有一定的了解。
附录
Qt应用程序的发布(windeployqt)https://blog.51cto.com/u_15346415/5172452