ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

静态编译xmly-downloader-qt5:qt5-static + AppVeyor实现三平台CI自动构建指南

静态编译xmly-downloader-qt5:qt5-static + AppVeyor实现三平台CI自动构建指南 静态编译xmly-downloader-qt5qt5-static AppVeyor实现三平台CI自动构建指南【免费下载链接】xmly-downloader-qt5喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding).项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5xmly-downloader-qt5 是一款基于Go Qt5编写的喜马拉雅FM专辑下载器GUI支持解析VIP与付费专辑。本文将围绕「静态编译」这一核心主题带你用qt5-static AppVeyor一套脚本 CI矩阵自动产出 Windows / Linux / macOS 三平台可分发的绿色版程序包——无需在每台机器上手工装 Qt。一、为什么要静态编译新手先看这里 用普通方式编译 Qt 程序时生成的 exe 依赖目标机器上的 Qt 动态库缺一个.dll就闪退。而静态编译会把 Qt5 的所有依赖直接打包进可执行文件做到「拷走即运行」。省心用户不需要安装任何 Qt 运行库省空间单个文件就是一个完整应用关键点使用 qt5-static 提供的预编译静态 Qt5 包5.14 / 5.15免去自己源码编译 Qt 数小时的等待 本项目的构建思路在 ci/appveyor_build.ps1 中完整实现三平台共用一条流程。二、项目结构看懂 Go 与 Qt5 如何「牵手」xmly-downloader-qt5 不是用 Qt 的 Binding 方案而是让两种语言各司其职Go 负责下载核心src/cgoqt/目录下的 xmly_downloader.go 实现专辑解析、音频下载等核心逻辑通过 cgo 以 C 静态库形式导出接口声明见 cgo.h依赖见 go.modC 负责界面Qt Widgets 界面代码位于src/ui/与src/runnables/工程文件为 src/xmly-downloader-qt5.pro其中一行LIBS $$PWD/cgoqt/xmlydownloader.a把 Go 库接进 Qt 工程程序主界面支持专辑解析、Cookie/二维码登录、批量多选下载静态编译后效果如下三、三平台构建流程一条 PowerShell 脚本走天下ci/appveyor_build.ps1 通过CI_WINDOWS/CI_LINUX/CI_MACOS环境变量分流三个平台的步骤高度一致可拆成 5 步记忆1. 下载并解压对应平台的 qt5-static 静态包平台静态包额外依赖Windowsqt5-static-win32MinGWmsys64Linuxqt5-static-linuxlibglib2.0-dev、libxkbcommon-devmacOSqt5-static-osx无2. 把静态 Qt 的 bin 目录加入 PATH脚本统一将qt5-static/.../bin放到PATH最前保证qmake、make都指向静态版 Qt。3. 编译 Go 核心为 C 静态库进入src/cgoqt执行go build -buildmodec-archive产出xmlydownloader.a。4. qmake make 编译 Qt 工程qmake CONFIGrelease ../src/xmly-downloader-qt5.pro make -j2 # Windows 下为 mingw32-make -j25. 打包产物Windows复制xmly-downloader-qt5.exe用 7z 压缩为xmly-downloader-qt5_windows_v版本号.zipLinux额外生成一个.sh启动脚本再tar.gz压缩macOS直接对xmly-downloader-qt5.app打包四、CI 矩阵自动化三平台一次 Push 全部构建 仓库中的 .github/workflows/build_qmake.yml 把上面的流程搬进了 CI 矩阵要点如下触发条件master分支上src/**或工作流文件变更时自动运行Push 与 PR 均可构建矩阵windows-latest/ubuntu-latest/macos-latest三节点并行fail-fast: false保证单个平台失败不拖累其他平台环境准备Linux 固定 gcc-9Go 由 setup-go 自动安装qt5-static 5.15 按平台下载并解压统一构建入口Linux/macOS 直接执行ci/build.shWindows 通过 msys2 的 MinGW shell 执行实现一套脚本三平台通用产物上传三平台分别产出.7z/.tar.xz制品最后由upload任务汇聚并推送到网盘WebDAV方便用户下载静态编译产物开箱即用的下载管理界面批量任务 进度条构建成功后的绿色版单文件程序支持多主题切换例如「淡蓝」主题五、常见问题 FAQ ❓Q1Linux 上 make 报 xcb 相关错误怎么办按 CI 脚本补装依赖libxcb*、libx11-xcb-dev、libxkbcommon-x11-dev见 build_qmake.yml 的 Install Libs 步骤。Q2为什么 Windows 端要用 msys2静态包需要 MinGW 工具链编译msys2 提供mingw32-make与 gcc是 Windows 下最顺手的 Qt 构建环境。Q3版本号是哪里来的CI 使用构建版本号变量如$env:APPVEYOR_BUILD_VERSION拼进文件名保证每次自动构建的包名唯一、可追溯。Q4本地手动构建可以吗可以。按 README.md 的 Build 章节先把 Qt 的bin加入 PATH再进src/cgoqt执行go build -buildmodec-archive最后用 Qt Creator 导入 src/xmly-downloader-qt5.pro 编译即可。六、小结本文以静态编译为主线介绍了 xmly-downloader-qt5 如何用 qt5-static 免依赖打包、如何用一条 PowerShell 脚本覆盖三平台构建、再用 CI 矩阵实现「Push 即出包」。照着 ci/appveyor_build.ps1 与 build_qmake.yml 的结构你也能为自己的 Qt Go 混合项目快速搭起跨平台自动构建流水线 ⚠️ 提醒本工具仅供学习交流所下载音频版权归喜马拉雅FM所有请遵守平台规则、勿用于商业用途。【免费下载链接】xmly-downloader-qt5喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding).项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表