編譯xmly-downloader-qt5:qt5-static + AppVeyor實(shí)現(xiàn)三平臺(tái)CI自動(dòng)構(gòu)建指南)
靜態(tài)編譯xmly-downloader-qt5qt5-static AppVeyor實(shí)現(xiàn)三平臺(tái)CI自動(dòng)構(gòu)建指南【免費(fèi)下載鏈接】xmly-downloader-qt5喜馬拉雅FM專輯下載器. 支持VIP與付費(fèi)專輯. 使用GoQt5編寫(Not Qt Binding).項(xiàng)目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5xmly-downloader-qt5 是一款基于Go Qt5編寫的喜馬拉雅FM專輯下載器GUI支持解析VIP與付費(fèi)專輯。本文將圍繞「靜態(tài)編譯」這一核心主題帶你用qt5-static AppVeyor一套腳本 CI矩陣自動(dòng)產(chǎn)出 Windows / Linux / macOS 三平臺(tái)可分發(fā)的綠色版程序包——無(wú)需在每臺(tái)機(jī)器上手工裝 Qt。一、為什么要靜態(tài)編譯新手先看這里 用普通方式編譯 Qt 程序時(shí)生成的 exe 依賴目標(biāo)機(jī)器上的 Qt 動(dòng)態(tài)庫(kù)缺一個(gè).dll就閃退。而靜態(tài)編譯會(huì)把 Qt5 的所有依賴直接打包進(jìn)可執(zhí)行文件做到「拷走即運(yùn)行」。省心用戶不需要安裝任何 Qt 運(yùn)行庫(kù)省空間單個(gè)文件就是一個(gè)完整應(yīng)用關(guān)鍵點(diǎn)使用 qt5-static 提供的預(yù)編譯靜態(tài) Qt5 包5.14 / 5.15免去自己源碼編譯 Qt 數(shù)小時(shí)的等待 本項(xiàng)目的構(gòu)建思路在 ci/appveyor_build.ps1 中完整實(shí)現(xiàn)三平臺(tái)共用一條流程。二、項(xiàng)目結(jié)構(gòu)看懂 Go 與 Qt5 如何「牽手」xmly-downloader-qt5 不是用 Qt 的 Binding 方案而是讓兩種語(yǔ)言各司其職Go 負(fù)責(zé)下載核心src/cgoqt/目錄下的 xmly_downloader.go 實(shí)現(xiàn)專輯解析、音頻下載等核心邏輯通過(guò) cgo 以 C 靜態(tài)庫(kù)形式導(dǎo)出接口聲明見 cgo.h依賴見 go.modC 負(fù)責(zé)界面Qt Widgets 界面代碼位于src/ui/與src/runnables/工程文件為 src/xmly-downloader-qt5.pro其中一行LIBS $$PWD/cgoqt/xmlydownloader.a把 Go 庫(kù)接進(jìn) Qt 工程程序主界面支持專輯解析、Cookie/二維碼登錄、批量多選下載靜態(tài)編譯后效果如下三、三平臺(tái)構(gòu)建流程一條 PowerShell 腳本走天下ci/appveyor_build.ps1 通過(guò)CI_WINDOWS/CI_LINUX/CI_MACOS環(huán)境變量分流三個(gè)平臺(tái)的步驟高度一致可拆成 5 步記憶1. 下載并解壓對(duì)應(yīng)平臺(tái)的 qt5-static 靜態(tài)包平臺(tái)靜態(tài)包額外依賴Windowsqt5-static-win32MinGWmsys64Linuxqt5-static-linuxlibglib2.0-dev、libxkbcommon-devmacOSqt5-static-osx無(wú)2. 把靜態(tài) Qt 的 bin 目錄加入 PATH腳本統(tǒng)一將qt5-static/.../bin放到PATH最前保證qmake、make都指向靜態(tài)版 Qt。3. 編譯 Go 核心為 C 靜態(tài)庫(kù)進(jìn)入src/cgoqt執(zhí)行g(shù)o build -buildmodec-archive產(chǎn)出xmlydownloader.a。4. qmake make 編譯 Qt 工程qmake CONFIGrelease ../src/xmly-downloader-qt5.pro make -j2 # Windows 下為 mingw32-make -j25. 打包產(chǎn)物Windows復(fù)制xmly-downloader-qt5.exe用 7z 壓縮為xmly-downloader-qt5_windows_v版本號(hào).zipLinux額外生成一個(gè).sh啟動(dòng)腳本再tar.gz壓縮macOS直接對(duì)xmly-downloader-qt5.app打包四、CI 矩陣自動(dòng)化三平臺(tái)一次 Push 全部構(gòu)建 倉(cāng)庫(kù)中的 .github/workflows/build_qmake.yml 把上面的流程搬進(jìn)了 CI 矩陣要點(diǎn)如下觸發(fā)條件master分支上src/**或工作流文件變更時(shí)自動(dòng)運(yùn)行Push 與 PR 均可構(gòu)建矩陣windows-latest/ubuntu-latest/macos-latest三節(jié)點(diǎn)并行fail-fast: false保證單個(gè)平臺(tái)失敗不拖累其他平臺(tái)環(huán)境準(zhǔn)備Linux 固定 gcc-9Go 由 setup-go 自動(dòng)安裝qt5-static 5.15 按平臺(tái)下載并解壓統(tǒng)一構(gòu)建入口Linux/macOS 直接執(zhí)行ci/build.shWindows 通過(guò) msys2 的 MinGW shell 執(zhí)行實(shí)現(xiàn)一套腳本三平臺(tái)通用產(chǎn)物上傳三平臺(tái)分別產(chǎn)出.7z/.tar.xz制品最后由upload任務(wù)匯聚并推送到網(wǎng)盤WebDAV方便用戶下載靜態(tài)編譯產(chǎn)物開箱即用的下載管理界面批量任務(wù) 進(jìn)度條構(gòu)建成功后的綠色版單文件程序支持多主題切換例如「淡藍(lán)」主題五、常見問(wèn)題 FAQ ?Q1Linux 上 make 報(bào) xcb 相關(guān)錯(cuò)誤怎么辦按 CI 腳本補(bǔ)裝依賴libxcb*、libx11-xcb-dev、libxkbcommon-x11-dev見 build_qmake.yml 的 Install Libs 步驟。Q2為什么 Windows 端要用 msys2靜態(tài)包需要 MinGW 工具鏈編譯msys2 提供mingw32-make與 gcc是 Windows 下最順手的 Qt 構(gòu)建環(huán)境。Q3版本號(hào)是哪里來(lái)的CI 使用構(gòu)建版本號(hào)變量如$env:APPVEYOR_BUILD_VERSION拼進(jìn)文件名保證每次自動(dòng)構(gòu)建的包名唯一、可追溯。Q4本地手動(dòng)構(gòu)建可以嗎可以。按 README.md 的 Build 章節(jié)先把 Qt 的bin加入 PATH再進(jìn)src/cgoqt執(zhí)行g(shù)o build -buildmodec-archive最后用 Qt Creator 導(dǎo)入 src/xmly-downloader-qt5.pro 編譯即可。六、小結(jié)本文以靜態(tài)編譯為主線介紹了 xmly-downloader-qt5 如何用 qt5-static 免依賴打包、如何用一條 PowerShell 腳本覆蓋三平臺(tái)構(gòu)建、再用 CI 矩陣實(shí)現(xiàn)「Push 即出包」。照著 ci/appveyor_build.ps1 與 build_qmake.yml 的結(jié)構(gòu)你也能為自己的 Qt Go 混合項(xiàng)目快速搭起跨平臺(tái)自動(dòng)構(gòu)建流水線 ?? 提醒本工具僅供學(xué)習(xí)交流所下載音頻版權(quán)歸喜馬拉雅FM所有請(qǐng)遵守平臺(tái)規(guī)則、勿用于商業(yè)用途。【免費(fèi)下載鏈接】xmly-downloader-qt5喜馬拉雅FM專輯下載器. 支持VIP與付費(fèi)專輯. 使用GoQt5編寫(Not Qt Binding).項(xiàng)目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考