qt-qml程序使用linuxdeploy打包appimage
前提条件
linux下qt程序打包appimage工具主要有三个。
官方教程里推荐的是第一个appimage-builder
+appimagetool
,在deepin20.2下报奇怪的错误:
package lockup fail
百度上的教程大部分都是推荐第二个linuxdeployqt
,结果这个工具都不支持太新的glibc,最多支持到ubuntu18.04。
第三个是linuxdeploy
可以在deepin20.2下完美打包qt,下面是一个简单的介绍:
deepin20.2 qt程序使用release构建成功,将生成的可执行程序复制到一个新的文件夹,这里我用xlxplayer文件夹。
制作图标和desktop文件
图标就找一个现成的png图标用PS改一下,desktop文件也复制一份现成的改一下。
将图标文件、desktop文件都放在新文件夹里面,desktop文件的exec文件路径直接用相对路径,icon文件路径不用加格式后缀。如下所示:
[Desktop Entry]
Categories=Office
Comment=psychology player
Encoding=UTF-8
Exec=xlxplayer
GenericName=psychology video player
Icon=xlxplayer
Name=xlxplayer
Terminal=false
Type=Application
X-Deepin-AppID=xlxplayer
X-Deepin-CreatedBy=com.deepin.dde.daemon.Launcher
X-Deepin-Vendor=user-custom
下载linuxdeploy工具
到这个github主页分别下载linuxdeploy-x86_64.AppImage
linuxdeploy-plugin-qt-x86_64.AppImage
linuxdeploy-plugin-appimage-x86_64.AppImage
这三个命令行工具
https://github.com/linuxdeploy
将这三个文件都赋予可执行权限,放在刚才新建的文件夹上层(放在同一级其实也没问题)
设置qml资源环境变量
在刚才新建的xlxplayer文件夹里面打开终端,将qt工程源码复制过来并且重命名为src
export QML_SOURCES_PATHS=src
一个命令生成appimage
../linuxdeploy-x86_64.AppImage --appdir AppDir -e xlxplayer -i xlxplayer.png -d xlxplayer.desktop --plugin qt --output appimage
--appdir AppDir
会在当前文件夹下新建AppDir文件夹,即为虚拟文件目录
-e xlxplayer
可执行文件
-i xlxplayer.png
图标文件
-d xlxplayer.desktop
desktop文件
问题修复
找不到/usr/lib/x86_64-linux-gnu/qt5/plugins/texttospeech
缺少包,apt search进行搜索安装
sudo apt install qtspeech5-flite-plugin qtspeech5-speechd-plugin