QT程序多平台下可执行文件的打包方式
一、简述
QT项目开发完成后,需要打包发布程序,在实际生产中不可能把源码发给别人,所以需要将源码打包正可执行文件或者安装程序。
二、设置应用图标
把 ico 文件放到源代码目录下,在QT项目中的'.pro'文件中添加自己准备好的ico文件(使用QT默认生成的图标时,可以跳过这一步)
RC_ICONS = user.ico // user.ico是自己的图标名称
三、打包windows系统下的可执行文件
- 以 Release 方式编译生成 exe 程序,也就是使用Release模式调试程序。
- 编译完成后会在项目文件下生成一个'build-Qt_hello_word-Desktop_Qt_5_12_9_MinGW_64_bit-Release'文件,在文件release中找.可执行文件
- 现在的可执行文件是不可运行的,会提示找不到.dll文件
- 创建'QT_test'文件,将生成的.exe文件拷到'QT_test'文件中
- 打开MinGW,进入到'QT_test'文件路径下
- 在MinGW中使用
windeployqt
命令打包程序
windeployqt Qt_hello_word.exe
7. 执行完成后文件中会生成很多dll文件,这样我们的可执行文件就已经制作完成了,点击.exe文件就可以直接运行
8. 使用Inno Setup软件可以将执行文件打包成安装软件,在这里我就不过多介绍了,需要的小伙伴可以查看这篇博客,这里我就直接引用一下Qt 程序发布以及打包成exe安装包。
Inno Setup软件的下载地址:https://jrsoftware.org/isdl.php。
四、打包linux系统下的可执行文件
linux系统下编译成可执行文件有两种方式,如果系统中安装有QtCreator软件,直接以Release方式编译运行即可生成可执行文件,这里主要介绍一下qmake的使用。
- 安装qmake软件
在linux系统下使用qmake进行编译,没有安装的可以安装一下
sudo apt-get install qtchooser
-
将windows系统下的qt项目拷贝到linux系统下,将.pro.user文件删除
-
执行
qmake
命令生成Makefile文件
-
使用
make
编译生成可执行文件
-
将编译生成的文件单独拷贝到空的文件夹中,使用linuxdeployqt工具进行打包
-
在github直接下载编译好的 linuxdeployqt-x86_64.AppImage 应用程序文件,如下图所示:
-
安装linuxdeployqt工具
chmod +x linuxdeployqt-5-x86_64.AppImage # 直接将linuxdeployqt 拷贝到 /usr/local/bin目录下即可 cp linuxdeployqt-5-x86_64.AppImage /usr/local/bin/linuxdeployqt # 查看印版本信息 linuxdeployqt -version
-
再试用工具的时候,需要将QT的环境变量配好,在文件 “~/.bashrc” 中添加以下信息即可
# QT_HOME是自己安装的路径 export QT_HOME=/opt/Qt5.12.9/5.12.9/gcc_64 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${QT_HOME}/lib export QT_PLUGIN_PATH=$QT_PLUGIN_PATH:${QT_HOME}/plugins export QML2_IMPORT_PATH=$QML2_IMPORT_PATH:${QT_HOME}/qml PATH=$PATH:${QT_HOME}/bin
-
运行命令,开始打包
# 打包执行程序,需要运行环境中已经安装了QT linuxdeployqt 程序名称 # 将所有依赖和可执行文件都打成可执行文件,运行环境无需安装QT linuxdeployqt 程序名称 -appimage -always-overwrite
-
打包过程中可能缺少的文件
# libodbc.so.2 sudo apt install unixodbc-dev # libpq.so.5 sudo apt-get install libpq-dev
五、编译ARM环境下的可执行文件
ARM平台下的可执行文件和linux系统下的方式是一样的,同样的有两种方式,只不过ARM的qmake是qt-everywhere-src-5.12.9源码编译生成的软件,编译完成后在路径'arm-qt/bin'路径下会生成qmake软件,不知道怎么编译的小伙伴可以看我之前的QT之ARM平台的移植
- 使用qmake软件的方式编译
生成Makefile文件并编译
/home/linux/arm-qt/bin/qmake
make
2. 以Release方式编译
在linux中装有QtCreator软件的小伙伴可以在软件中添加arm环境下的qmake软件,直接以Release方式编译即可生成执行文件。
打开 Qt Creator 界面,找到 Tools(工具)→Options(选项)。
按下图步骤,找到ARM平台的qmake。
配置C/C++编译器为 arm-linux-gnueabihf-g++
配置Kits
运行程序
编译完成后将会在项目文件夹中生成ARM环境的可执行文件
参考文献
Qt 程序发布以及打包成exe安装包:https://www.cnblogs.com/ybqjymy/p/13540451.html。
QT5程序打包发布,最终生成一个.exe执行程序:http://blog.sina.com.cn/s/blog_96c6e6ef0102zx8y.html。
相关文章
- 1300多万条数据30G论坛大数据优化实战经验小结 - 2012年于浙江杭州西湖区
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 开发一个好用稳定的开放组件
- 现在物价虽然高得离谱,但是内存条都白菜价格了,需要调整程序架构的思维“与时俱进” --- 改进系列之一
- 通用信息化开发平台 -- 通用权限管理系统改进登录日志显示功能
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmKnowledge日积月累功能的实现
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommnets 显示某个对象的评论列表的功能实现
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommnetList 所有评论列表的功能实现
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommentEdit 编辑评论的功能实现
- 简单快速开发C\S架构程序用最简单的不分层最快的效率达到功能要求的例子程序FrmCommentAdd 添加评论的功能实现
- 以防万一,把被删除的数据都备份起来,关键数据丢了哭都来不及了
- C#.NET通用权限管理系统组件中让系统按代码生成器的方式运行的方法
- 老程序员激情澎湃1000KM,祖国大地风光无限美好
- 通用权限管理系统组件 (GPM - General Permissions Manager) 适合行政性单位使用的基于组织机构的权限管理系统
- 通俗易懂的理解,大学里为啥做出一流软件比较难?【画家为啥造不出原子弹一个道理】
- 提高信息系统用户帐户安全的几个增强功能分享
- 为什么开发人员工作10多年了还会迷茫?没有安全感?
- 在浙江杭州快速开发公司内部办公自动化OA系统的经验总结(有成熟的后台配置工具、开发平台、程序员朋友圈还真不错,做软件项目还得靠积累才稳妥)
- 给浙江杭州的客户开发一套企业内部管理系统C#.NET的在C\S+B\S混搭运行模式效果分享
- 通用权限管理系统组件 (GPM - General Permissions Manager) 权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱
- 通用权限管理系统组件 (GPM - General Permissions Manager) 自己动手只能写一个轻量级的权限系统了功能也不强大,这不是白白流血流汗吗?