#!/bin/sh
exe="RFIDReaderTest" #要打包的程序名 *
#获取当前路径
currentPath=$(cd `dirname $0`; pwd)
#打包的Qt库位置 *
packDes="$currentPath/../lib"
#程序依赖库所在位置,用于打包依赖库需要的Qt库,没有留空即可,即myLibPath="" *
myLibPath="$currentPath/myLib"
#删除原有文件夹,新建新文件夹,存储Qt库
rm -r $packDes
mkdir $packDes
#----------获取程序所依赖的‘Qt库’路径--------------
echo "------------正在获取程序所依赖的‘Qt库’--------------"
#输出程序所依赖的Qt库
ldd $exe | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
'
#赋值路径,准备拷贝
copyPathList=$(ldd $exe | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
')
#拷贝‘Qt库’文件到打包文件夹路径中
cp $copyPathList $packDes
echo "---正在打包libQt5XcbQpa.so.*.0和libQt5DBus.so.*.0库......"
#获取依赖库中第一个库完整的路径
libPath=$(echo $copyPathList | awk -F " " '{printf("%s\n"),$1}')
#获取Qt版本号
sonPath1=$(echo $libPath | awk -F "/lib" '{printf("%s\n"),$1}')
sonPath2=$(echo $sonPath1 | awk -F "/" '{printf("%s\n"),$NF}')
sonPath3=$(echo $sonPath1 | awk -F "/$sonPath2" '{printf("%s\n"),$1}')
QtVersion=$(echo $sonPath3 | awk -F "/" '{printf("%s\n"),$NF}')
echo "当前Qt版本号为:"$QtVersion
cd $currentPath
#打包Qt插件platforms文件夹
echo "---打包Qt插件platforms文件夹......"
#分解拼接插件platforms路径
platformsPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/plugins/platforms"
echo "---platformsPath路径:"$platformsPath
#将platforms文件拷贝到程序所在路径
cp -r $platformsPath $currentPath
#分解拼接指定库路径
Qt5XcbCopyPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/lib/libQt5XcbQpa.so.$QtVersion"
Qt5DBusCopyPath=$(echo $libPath | awk -F "/lib/" '{printf("%s\n"),$1}')"/lib/libQt5DBus.so.$QtVersion"
echo "Qt5XcbCopyPath:"$Qt5XcbCopyPath
echo "Qt5DBusCopyPath:"$Qt5DBusCopyPath
#拷贝libQt5XcbQpa.so.$QtVersion和libQt5DBus.so.$QtVersion库
cp $Qt5XcbCopyPath $packDes
cp $Qt5DBusCopyPath $packDes
#软链接
echo "------- 软链接正在打包libQt5XcbQpa.so.*和libQt5DBus.so.* --------"
cd $packDes
Qt5XcblnPath=$(echo libQt5XcbQpa.so.*.0)
Qt5DBuslnPath=$(echo libQt5DBus.so.*.0)
libName1=$(echo $QtVersion | awk -F "." '{printf("%s\n"),$1}')
libName2=$(echo $QtVersion | awk -F "." '{printf("%s\n"),$2}')
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so.$libName1
ln -s $Qt5XcblnPath $packDes/libQt5XcbQpa.so.$libName1.$libName2
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so.$libName1
ln -s $Qt5DBuslnPath $packDes/libQt5DBus.so.$libName1.$libName2
#打包自己的库所依赖的QT库
if [ ! -d "$myLibPath" ]; then
echo "$myLibPath no exist"
echo "-----------'$exe'所依赖的Qt库打包完成!-----------"
exit 1 #没有依赖自己写的库,直接结束
fi
echo "------------正在获取自己写的库所依赖的QT库--------------"
for filePath in $myLibPath/*.so
do
echo "myLib:"$filePath
#赋值路径,准备拷贝
copyPathList=$(ldd $filePath | awk -F " " \
'
{
if ($3 ~ "/Qt")
{
printf("%s\n"),$3
}
}
')
for file in $copyPathList
do
name=$(echo $file | awk -F "/lib/" '{ print $2}')
if [ ! -f "$packDes/$name" ];then
echo "copy file:"$file
#拷贝‘Qt库’文件到打包文件夹路径中
cp $file $packDes
fi
done
done
echo "-----------所依赖的Qt库全部打包完成!-----------"

hymaliang1120
- 粉丝: 1
最新资源
- 网站项目管理规范手册.doc
- 模式识别及其在图像处理中的应用.doc
- 项目管理—如何搞好竣工结算.doc
- 人口健康信息化实践与总体规划培训课件.pptx
- 主机网络存储维保服务技术方案.docx
- XMSinaSwift-Swift资源
- 综合布线系统设计模板样本.doc
- 乐购网络商业街创业计划书.docx
- 广告创意与表现课程基于网络考核方案.doc
- HP虚拟化计算技术解决方案.doc
- 网络建设项目解决方案.doc
- 微软招聘过程与经验(1).ppt
- 嵌入式课程设计学生信息管理系统.doc
- 网络信息辨真伪活动方案.doc
- 【推荐】郭秀花--医学大数据分析策略与数据挖掘.ppt
- 毕业设计装卸料小车多方式运行的PLC控制系统设计.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


