Qt学习——Qt程序打包

一、window

工具

1.1 使用windeployqt打包

以Release模式编译项目,然后将release文件夹中的exe文件复制到指定目录下。

以管理员身份运行Qt 5.10.1 for Desktop,根据编译器选择对应编译版本,然后cd到放置exe的目录下,运行下面指令,完成后程序自动将需要依赖复制到对应目录下。

windeployqt name.exe

 

1.2 使用Dependency Walker修复缺失dll

直接运行exe文件,若无报错可跳过此步,若报错,先根据提示找到对应dll复制到目录下,如果加载了第三方库如OpenVC,可运行Dependency Walker,打开exe文件,查看依赖。

1.3 使用Inno Setup生成安装程序

(1)确保可以直接运行exe文件后,打开Inno Setup,使用向导创建脚本。

(2)设置程序信息

(3)配置应用程序

  • 导入应用程序(Browse):选择对应exe文件
  • 添加文件(Add files):导入所有文件
  • 添加文件夹(Add folder):导入所有文件夹及其子文件夹,添加文件时会弹出窗口询问是否包含子文件夹,同时若添加文件夹需要对脚本进行修改

(4)快捷方式配置,根据需求设置,可采用默认

( 5)安装配置,根据需求设置,可采用默认

(6)修改脚本

默认情况下,添加文件夹中的内容安装后会放置在与程序同级目录下,若需要保持原本的目录架构,需要修改包含文件夹相关的脚本,在"{app}"中添加文件夹的名字"{app}\fileName"

(7)编译生成安装包,完成后可保存脚本用于程序修改后重新打包

二、Ubuntu

2.1 程序编译打包

  1. 使用Release版本编译程序
  2. 新建文件夹test,并将执行文件(test)移动到空白文件夹中
  3. 执行打包脚本pack.sh

pask.sh脚本内容

#!/bin/sh    
exe="test" #程序名称  
des="<dir>/test" #程序所在目录  
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')    
cp $deplist $des  

给予权限

sudo chmod 777 pack.sh

执行 

./pack.sh

2.2 生成执行文件

在同级目录下编写执行脚本test.sh,脚本名字要与执行文件名字一致,内容如下

#!/bin/sh  
appname=`basename $0 | sed s,\.sh$,,`  
      
dirname=`dirname $0`  
tmp="${dirname#?}"  
      
if [ "${dirname%$tmp}" != "/" ]; then  
dirname=$PWD/$dirname  
fi  
LD_LIBRARY_PATH=$dirname  
export LD_LIBRARY_PATH  
$dirname/$appname "$@"  

给予权限

chmod +x test.sh

执行

./test.sh

注意:执行程序时,运行的是脚本而不是执行文件

参考

https://blog.csdn.net/qq_20161893/article/details/72886994

https://www.cnblogs.com/wanghuixi/p/8621853.html

发布了53 篇原创文章 · 获赞 186 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/Kalenee/article/details/84038523