window系统打包QT方法很多,用官方提供的windeployqt工具就可以,不过对应的版本要对。
linux 系统打包QT程序要稍稍复杂一点,一般有两种方式:
1.打包成二进制文件,2.打包成安装包形式
具体步骤如下:
1.将工程改成Release模式编译运行
2.打开编译输出的文件夹,(带二进制的可执行文件那个)。在这个新建的文件夹中新建一个脚本文件install.sh,用命令chmod 777 install.sh修改文件权限,然后向脚本中写入以下内容
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
3.切换到当前文件夹,运行./install.sh uidemo01,(uidemo01是上一步编译输出的二进制可执行文件),运行完上述指令后,同目录下会生成lib文件夹,
4.在桌面或其他合适的地方创建一个文件夹如app把上一步编译输出的二进制可执行文件和ib文件夹里生成的库文件全部复制过来,不用复制lib文件夹
5.进入QT的安装目录,找到platforms文件夹,如:/usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms,将整个platforms文件夹复制到app文件夹中
6.将上文的install.sh文件放到app/platfroms中,然后切换到当前文件夹路径,运行./install.sh libqxcb.so,这时会生成一个新的lib文件夹(即libqxcb.so的库文件)。
7.将运行生成的lib文件夹里libqxcb.so的库文件全部复制到app文件夹里去,然后可以删除app/platfroms/lib文件夹
8.在app文件夹里新建脚本文件uidemo01.sh,执行命令chmod 777 uidemo01.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 "$@"
9.这时把整个app文件夹复制到别的电脑上,运行./uidemo01.sh脚本,就可以启动程序了
这是就基本完成了打包成二进制文件,下面继续可以打包成可安装程序
10.将二进制文件uidemo01和资源文件复制到app文件夹中,然后在APP文件夹中新建uidemo01.desktop文件,并写入以下内容
[Desktop Entry]
Type=Application
Name=测水仪
Exec=/home/pi/Desktop/app/uidemo01.sh
Icon=/home/pi/Desktop/app/image/5.png
Encoding=UTF-8
Version=1.0
其中Exec路劲和Icon图标路径根据实际情况进行修改
11.在app文件夹下新建setup脚本文件用于安装,并写入以下内容
!/bin/bash
#start pi spi
pwds=/boot/config.txt
sudo sed -i 's/dtparam=spi=off//g' $pwds
sudo sed -i 's/dtparam=spi=on//g' $pwds
sudo sed -i '$a dtparam=spi=on' $pwds
CurDir=$PWD"/uidemo01.desktop"
ExecDir=$PWD"/uidemo01.sh"
IconDir=$PWD"/image/5.png"
sudo sed -i "4c Exec=$ExecDir" $CurDir
sudo sed -i "5c Icon=$IconDir" $CurDir
sudo cp $CurDir /usr/share/applications/uidemo01.desktop
cp $CurDir /home/pi/Desktop/uidemo01.desktop
其中,CurDir和ExecDir,IconDir 根据实际情况进行修改。
12.运行./setup 文件,就可以生成桌面快捷方式,这时就完成了QT安装程序的打包,亲测可用。
若有提示错误请检查库文件是否齐全或者是文件权限是否修改
参考:https://blog.csdn.net/weixin_43219970/article/details/87269166