首页 > 编程语言 >QT程序多平台下可执行文件的打包方式

QT程序多平台下可执行文件的打包方式

时间:2024-01-18 14:25:27浏览次数:40  
标签:可执行文件 文件 QT 编译 linuxdeployqt 打包

一、简述

QT项目开发完成后,需要打包发布程序,在实际生产中不可能把源码发给别人,所以需要将源码打包正可执行文件或者安装程序。

二、设置应用图标

把 ico 文件放到源代码目录下,在QT项目中的'.pro'文件中添加自己准备好的ico文件(使用QT默认生成的图标时,可以跳过这一步)

 
  RC_ICONS = user.ico // user.ico是自己的图标名称
 

三、打包windows系统下的可执行文件

  1. 以 Release 方式编译生成 exe 程序,也就是使用Release模式调试程序。
  2. 编译完成后会在项目文件下生成一个'build-Qt_hello_word-Desktop_Qt_5_12_9_MinGW_64_bit-Release'文件,在文件release中找.可执行文件
  3. 现在的可执行文件是不可运行的,会提示找不到.dll文件
  4. 创建'QT_test'文件,将生成的.exe文件拷到'QT_test'文件中
  5. 打开MinGW,进入到'QT_test'文件路径下

  6. 在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的使用。

  1. 安装qmake软件
    在linux系统下使用qmake进行编译,没有安装的可以安装一下
 
  sudo apt-get install qtchooser
 
  1. 将windows系统下的qt项目拷贝到linux系统下,将.pro.user文件删除

  2. 执行qmake命令生成Makefile文件

  3. 使用make编译生成可执行文件

  4. 将编译生成的文件单独拷贝到空的文件夹中,使用linuxdeployqt工具进行打包

  5. github直接下载编译好的 linuxdeployqt-x86_64.AppImage 应用程序文件,如下图所示:

  6. 安装linuxdeployqt工具

     
      chmod +x linuxdeployqt-5-x86_64.AppImage
       
      # 直接将linuxdeployqt 拷贝到 /usr/local/bin目录下即可
      cp linuxdeployqt-5-x86_64.AppImage /usr/local/bin/linuxdeployqt
       
      # 查看印版本信息
      linuxdeployqt -version
     
  7. 再试用工具的时候,需要将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
     
  8. 运行命令,开始打包

     
      # 打包执行程序,需要运行环境中已经安装了QT
      linuxdeployqt 程序名称
       
      # 将所有依赖和可执行文件都打成可执行文件,运行环境无需安装QT
      linuxdeployqt 程序名称 -appimage -always-overwrite
     
  9. 打包过程中可能缺少的文件

     
      # 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平台的移植

  1. 使用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

标签:可执行文件,文件,QT,编译,linuxdeployqt,打包
From: https://www.cnblogs.com/kn-zheng/p/17972396

相关文章

  • QT之静态函数发送信号
    一、简介由于博主本人是初学者对QT的机制不了解,所以遇到了一个比较大的坑,特此记录一下。我遇到的问题是无法在静态函数中向另外一个类发送信号。解决办法:先将信号发送给同类中的普通函数,然后在从普通函数中发送信号给外部类。二、C与C++中static的用法这里不是介绍QT静态函数信......
  • QT之ARM平台的移植
      在开发板中运行QT程序的基本条件是具备QT环境,那么QT的移植尤为重要,接下载我将和小伙伴们一起学习QT的移植。一、准备材料tslib源码qt-everywhere-src-5.12.9.tar.xz源码arm开发版二、获取安装包tslib源码的git获取地址是:https://github.com/libts/tslib。qt-everywh......
  • python pyqt6 QComboBox 圆角边框
    圆角边框周围显示黑色直角QComboBox 新增如下设定即可xxx_source.view().window().setWindowFlag(Qt.WindowType.NoDropShadowWindowHint)xxx_source.view().window().setWindowFlag(Qt.WindowType.FramelessWindowHint)xxx_source.view().window().setAttribute(Qt.Widge......
  • HBuilderX mac M1 打包 vite/vue3 报错处理办法(pnpm)
    项目运行h5的时候都没有问题,但是要运行到微信开发者工具的时候打包报11:40:54.480Specificallythe"esbuild-darwin-arm64"packageispresentbutthisplatform11:40:54.480needsthe"esbuild-darwin-64"packageinstead.Peopleoftengetintothis很好看去论......
  • 使用pyinstaller打包python程序时报错UPX is not available
    使用pyinstaller打包python代码程序时报错:UPXisnotavailable原因是 python环境的Scripts文件夹内缺少了一个upx.exe的文件到官网https://github.com/upx/upx/releases/tag/v4.2.2中下载一个UPX,将下载文件解压后得到的upx.exe文件(解压后的所有文件里只要这一个文件即可,......
  • Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界
    一、前言这个系列对应自定义控件大全,一个专注于控件的编写,一个专注于UI界面的编写,程序员有两大软肋,一个是忌讳别人说自己的程序很烂很多bug,一个就是不擅长UI,基本上配色就直接rgb,对于第一点,只要放松心态,直面自己的不足,不断改进,才能问鼎武林至尊。至于第二点,因为程序员擅长的是逻辑......
  • java生成可执行文件
    创建可执行的JAR文件包--制作一个可执行的JAR文件包来发布你的程序是JAR文件包最典型的用法 Java程序是由若干个.class文件组成的。这些.class文件必须根据它们所属的包不同而分级分目录存放;运行前需要把所有用到的包的根目录指定给CLASSPATH环境变量或者jav......
  • vue+tsc+noEmit导致打包报TS类型错误问题及解决方法
    当我们新建vue3项目,package.json文件会自动给我添加一些配置选项,这写选项基本没有问题,但是在实际操作过程中,当项目越来越复杂就会出现问题。本文列举一个目前我遇到的一个问题:打包后报了一堆TS类型错误,怎么消除这些错误?项目环境:Vue3+Vite+TS当项目进行打包时候,突然发现终端......
  • 记录eletron客户端win7打包及安装使用问题
    win7nodeV14环境配置不能使用msi包安装nodeV14.x,需要下载zip包,手动解压安装文件。下载,nodeV14.15.3下载地址下载完成后解压,并配置环境变量系统变量新增 NODE_PATH 为 C:\nodepath-xx\node_modules系统变量新增 NODE_SKIP_PLATFORM_CHECK 为 1系统变量 path 追加 ;C:\node......
  • python pyqt6 颜色弹窗 QColorDialog
     defsetColor(self):#避免窗口置顶后,Dialog被主窗口覆盖,所以需要传递self#设定默认颜色使用getColor的第一个参数(使用setCurrentColor不生效)#"选择颜色"为Dialog弹窗的标题#设定QColorDialog.ColorDialogOption.ShowAlphaChanne......