教育网网站建设规范,西安网站建设seo,傻瓜式网站,深圳人才大市场官网招聘信息整理这篇文档的意义在于#xff1a;自己走了很多弯路#xff0c;淋过雨所以想为别人撑伞#xff0c;也方便回顾#xff0c;仅供参考 ps:
第一次做Windows下打包#xff0c;用了2小时#xff0c;第二次20秒第一次做Linux(ubuntu)下打包#xff0c;用了8小时#xff0c;…整理这篇文档的意义在于自己走了很多弯路淋过雨所以想为别人撑伞也方便回顾仅供参考 ps:
第一次做Windows下打包用了2小时第二次20秒第一次做Linux(ubuntu)下打包用了8小时第二次1分半
一、Windows
有许多比较坑的帖子会带新人走不少弯路大家注意鉴别没方法随缘 1、首先找到自己编译的对应版本 2、找到构建后的文件夹复制当前生成的exe文件到一个新的文件夹打包的目的文件如fileName 3、找到对应版本的Qt文件右键管理员运行 4、通过命令走到指定的地址 5、输入打包命令 windeployqt autoFileSet.exe --qmldir F:\Git-program\qt_practice\autoFileSet autoFileSet.exe是我的程序名 F:\Git-program\qt_practice\autoFileSet 是我QML源文件地址 到这里就拷贝成功了
二、Linux
Linux下有两种方法一种是通过自动化打包工具一种是通过脚本各有利弊
程序名以autoFileSet为例1、自动工具打包
1、工具下载:下载地址 我使用的虚拟机。
2、修改名称mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt
3、修改权限chmod 777 linuxdeployqt
4、放入/usr/local/bin目录方便调用sudo mv linuxdeployqt /usr/local/bin
5、测试打印版本linuxdeployqt --version 结果 linuxdeployqt (commit 2b38449), build 62 built on 2023-12-27 21:00:01 UTC 6、根据环境变量找寻qt库文件vim ~/.bashrc
7、在Vim里添加对应路径
8、添加后让其生效:source ~/.bashrc
9、测试打印版本qmake --version QMake version 3.1 Using Qt version 5.12.12 in /home/***/Qt5.12.12/5.12.12/gcc_64/lib 10、创建对应的文件夹把可执行文件拷过来。
11、执行自动拷贝linuxdeployqt fileName -appimage,检查是否拷贝成功 12、运行测试./ autoFileSet
13、压缩文件到当前目录sudo tar cvf autoFileSet.tar ./*
如有库的缺失看第三节
2、脚本打包
1、新建文件夹mkdir File 2、进入文件夹cd File 3、新建脚本文件touch copylib.sh 4、通过vim修改脚本内容
#!/bin/bash
LibDir$PWD/lib
Target$1
lib_array($(ldd $Target | grep -o /.* | grep -o /.*/[^[:space:]]*))
$(mkdir $LibDir)
for Variable in ${lib_array[]}
docp $Variable $LibDir
done5、新建脚本文件touch autoFileSet,修改内容
#!/bin/sh
appnamebasename $0 | sed s,\.sh$,,
dirnamedirname $0
tmp${dirname#?}
if [ ${dirname%$tmp} ! / ]; then
dirname$PWD/$dirname
fi
VLC_PLUGIN$PWD/plugins
echo $VLC_PLUGIN
LD_LIBRARY_PATH$dirname
export VLC_PLUGIN_PATH$VLC_PLUGIN
echo $LD_LIBRARY_PATH
export LD_LIBRARY_PATH
$dirname/$appname $6、修改权限
sudo chmod 777 copylib.sh
sudo chmod 777 autoFileSet.sh7、获取release生成的文件拷贝至目标文件File
8、执行./copylib.sh autoFileSet命令生成lib文件夹 9、将lib文件夹下面的库拷贝到File文件夹下面此时完成了添加程序依赖库 10、在Qt的安装目录下将copylib.sh复制到platforms文件夹当中执行./copylib.sh libqxcb.so命令此时也会生成lib文件夹同样复制lib内的库到File下重复的选替换即可 11、将platforms整个文件夹拷贝到File文件夹下 12、执行./autoFileSet.sh即可运行软件 如有库的缺失看第三节
3、库的缺失
两种打包方法都有问题但是报错会提醒到我们无非是某些库没有复制到这里需要我们进行手动复制、拷贝。 常见错误如
QQmlApplicationEngine failed to load component
qrc:/main.qml:3 无法为模块“QtQuick.Controls”
无法加载库 /home/mbox/autoFileSet/QtQuick/Controls.2/libqtquickcontrols2plugin.so
(libQt5QuickTemplates2.so.5: cannot open shared object file: No such file or directory) 加载插件这代表缺少libQt5QuickTemplates2.so.5
QQmlApplicationEngine failed to load component
qrc:/main.qml:3 模块“QtQuick.Controls”没有安装
qrc:/main.qml:1 模块“QtQuick”没有安装
qrc:/main.qml:6 模块“QtQuick.Controls.Material”没有安装
qrc:/main.qml:4 模块“QtQuick.Layouts”没有安装
qrc:/main.qml:2 模块“QtQuick.Window”没有安装这代表识别QtQuick失败这个坑我走的比较久原因是太信任报错了。 因为当前主流已经使用到QtQuick2版本以后了这里的报错意思是识别不到QtQuick2一定注意一下。 确认方法修改本地QT的名称比如Qt5.12.12,修改为666如果程序正常运行、功能无缺陷就代表打包成功了。
压缩
验证无误之后就可以压缩文件了sudo tar cvf autoFileSet.tar ./*到此全部流程结束。