完整编译指南:从 Lazarus、make 到 Flatpak 与 Windows 安装包)
游戏开发音视频桌面应用【免费下载链接】USDXThe free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStar™项目地址https://gitcode.com/gh_mirrors/us/USDX点击查看免费下载导读本文以 UltraStar Deluxe简称 USDX一款受 Sony SingStar™ 启发的自由开源卡拉 OK 游戏仓库根目录的 COMPILING.md 为主体系统梳理该项目的全部编译路径使用 Free Pascal Lazarus 的 IDE 构建、基于 autotools 的make命令行构建、Linux Flatpak 打包以及 Windows 便携版与 NSIS 安装器的制作。读完本文你将掌握 USDX 在 Linux、macOS、Windows 三大平台上的依赖准备、configure 选项语义、源码级编译原理与常见坑位并能够独立搭建开发环境、产出可运行的游戏二进制。一、编译前提Free Pascal 与运行期依赖USDX 的引擎与全部游戏逻辑使用 Object Pascal 编写其项目主文件位于 src/ultrastardx.dpr。因此编译的首要工具是 Free Pascal CompilerFPC。1.1 编译器要求FPC 3.0.0 或更新这是硬性版本下限。configure.ac 中通过AC_PROG_FPC探测编译器后会直接检查FPC_VERSION_MAJOR若低于 3 会以AC_MSG_ERROR终止配置流程并提示安装更新的 fpc。注意残留旧版本如果之前装过更老的 FPC务必彻底清除后再安装新版否则编译时会抛出各种莫名其妙的报错文档中明确提示 compiling will fail with various weird error messages。建议使用最新版 FPC并配合Lazarus 1.6 或更新的 IDE$lazarus-ide.org下载方便贡献补丁的开发者在可视化环境中调试。1.2 运行期链接库清单游戏运行与链接需要以下库对应 COMPILING.md 的依赖清单库用途仓库中的相关证据SDL2、SDL2_image窗口、图形渲染与图像加载src/lib/SDL2 下提供 Pascal 绑定FFmpeg 4.0 ~ 9.0视频解码与播放src/lib/ffmpeg-4.0 至 src/lib/ffmpeg-9.0 目录SQLite 3歌曲数据库/本地存档src/lib/SQLiteBASS音频回放引擎src/lib/bass 提供绑定DejaVu 等字体界面文本渲染game/fonts 中已随仓库附带 DejaVu、FreeSans、NotoSansPortAudio音频输入麦克风采样src/lib/portaudioLua 5.1/5.2/5.3/5.4插件脚本系统src/lua 下的 ULua* 单元OpenCV可选摄像头webcam支持src/lib/openCV3projectM 4.x可选音频可视化src/lib/projectM、game/visuals/projectMWindows 平台的 DLL 获取SDL2、SDL2_image、FFmpeg、SQLite、PortAudio、Lua 的预编译 DLL 发布在项目团队维护的 MXE forkgithub.com/UltraStar-Deluxe/mxe的 releases 区。仓库根目录提供了 dldlls.py 脚本执行后它会从un4seen.com下载 BASS 并解压x64/bass.dll到 game/bass.dll通过 GitHub API 搜索 MXE 仓库中与脚本内固定 commit SHA355c55d2...匹配的 release下载usdx-dlls-x86_64资源包若设置了ARTIFACT_ACCESS_TOKEN或GITHUB_TOKEN环境变量还能回退到 GitHub Actions artifacts 中拉取同一 commit 的构建产物。其余 Windows 构建所需 DLL如 BASS 插件、openCV 的 dll 等直接随本仓库分发例如 installer/dependencies/dll 与 src/lib/openCV。DLL 的更新流程见 UPDATING-DLLS.md先在 mxe 仓库开 PR再在本仓库 dldlls.py 中更新 commit id发布时以-rc1后缀标记预发布。二、方式一Lazarus IDE 图形化编译这是开发者日常迭代最顺手的方式启动 Lazarus菜单栏选择Project → Open Project…在弹出的文件对话框中选择src 子目录即你 USDX 工作副本下的src/根据平台选择工程文件Windows打开 src/ultrastardx-win.lpi。注意文档明确提示必须使用win64 版本的 Lazarus因为仓库内附带的第三方库是 64 位的Unix-like 系统Linux/macOS/BSD打开 src/ultrastardx-unix.lpi。该工程包含 123 个单元主单元为ultrastardx.dpr见 src/ultrastardx-unix.lpi编译菜单Run → Build或快捷键CtrlF9若想编译并直接启动游戏菜单Run → Run或按F9。补充若希望通过命令行获得与 IDE 一致的编译行为可直接调用 FPC 读取 src/ultrastardx.cfg或用make见下一节。无论走哪条路最终都会经过 src/switches.inc 完成平台相关的条件编译分支选择Windows 下引入config-win.inc、Darwin 下引入config-darwin.inc、Linux/FreeBSD 分别引入config-linux.inc/config-freebsd.inc。三、方式二autotools make 命令行构建重点3.1 依赖安装Linux / BSDDebian / Ubuntu文档原文整行git automake make gcc fpc libsdl2-image-dev libavformat-dev libavcodec-dev libavutil-dev libswresample-dev libswscale-dev libsqlite3-dev libfreetype6-dev portaudio19-dev libportmidi-dev liblua5.3-dev libopencv-videoio-dev fonts-dejavuFedoragit automake make gcc fpc SDL2_image-devel ffmpeg-devel sqlite-devel freetype-devel portaudio-devel portmidi-devel lua-devel opencv-develArchlinux参考 AUR 包ultrastardx-git中的依赖声明。可选依赖projectM 可视化需要 4.0 或更新版本而多数发行版仍自带 2.x/3.x所以很可能需要源码自行编译Webcam摄像头Debian/Ubuntu 额外安装g libopencv-dev。macOSHigh Sierra 及以上先安装 Homebrewbrew.shbrew install fpc或从 freepascal.org 下载 macOS 安装包xcode-select --install安装命令行工具一键安装依赖brew install sdl2 sdl2_image automake portaudio binutils sqlite freetype lua libtiff pkg-config ffmpeg opencvWindowsMSYS2 环境安装 MSYS2安装 FPC务必选用 Win32 cross-to-Win64 安装器以获得 Win64 的 RTL 运行库单元在 MSYS2 中安装交叉工具链pacman -S autoconf-wrapper automake-wrapper git make mingw-w64-x86_64-gcc mingw-w64-x86_64-tools向~/.bash_profile写入环境变量PATH${PATH}:/c/FPC/3.2.2/bin/i386-win32 FPCCFG/c/FPC/3.2.2/bin/i386-win32/fpc.cfg FPCDIR/c/FPC/3.2.2其中FPCCFG让 FPC 找到配置文件FPCDIR指明 RTL 单元根目录。3.2 编译与运行git clone https://github.com/UltraStar-Deluxe/USDX cd USDX ./autogen.sh # 由 autoreconf 生成 configure 脚本 ./configure # 可附加本节 3.4 的开关 make # macOS 上改为 make macos-standalone-app ./game/ultrastardx # 运行Windows 下为 game\ultrastardx.exe # macOSopen UltraStarDeluxe.app各步骤的源码级说明autogen.sh调用autoreconf --verbose --install --symlink --force生成 configure 脚本与 Makefile.in 模板对于 autoreconf 2.70 的旧版本还会补跑automake --add-missing安装辅助文件。make reconf目标同样会重新执行该脚本见 Makefile.in。configure.ac这是配置系统的核心。它声明了AC_INIT、宏目录dists/autogen/m4存放 ax_extract_version.m4、pkg_config_utils.m4 等辅助宏、源文件校验AC_CONFIG_SRCDIR(src/ultrastardx.dpr)并最终输出Makefile、src/Makefile以及平台化配置src/config-platform.inc。configure 的库探测逻辑对应 configure.ac通过pkg-config依次探测sdl2、SDL2_image、freetype2、sqlite3Lua 按5.5 → 5.4 → 5.3 → 5.2 → 5.1的顺序尝试适配 (K)Ubuntu 的lua5.x.pc命名与 macOS 的lua.pc命名并进一步用AC_SEARCH_LIBS([luaL_newstate], ...)确认符号可链接FFmpeg 探测libavcodec、libavformat、libavutil、libswscale、libswresample然后通过FFMPEG_LIBS_COMPATIBLE将库版本映射为 4.0 ~ 9.0若超出范围会直接报错Unsupported ffmpeg version, most recent version supported is 9.0, oldest version supported is 4.0OpenCV 需要 C 工具链AC_PROG_CXX C11 检查优先用 CMakefind_package(OpenCV)探测失败再回退到opencv4/opencv 3.0.0的 pkg-config 探测最终通过USE_OPENCV_CWRAPPER决定是否编译 src/lib/openCV3 的 C 包装层PortAudioportaudio-2.0、PortMidi/PortTime、projectMprojectM-4 4.0均在此处完成探测与宏定义探测结果写入src/config-platform.inc模板为 src/config.inc.in其中包含HaveFFmpeg、HaveProjectM、HavePortaudio、UsePortMidi、UseMidiEmu、UseOpenCVWrapper等条件编译宏以及各库版本常量src/switches.inc 再据此定义最终的播放/解码后端如UseBASSPlayback、UsePortaudioInput、UseFFmpegDecoder、UseProjectM。make 的实际动作顶层 Makefile.in 中all/debug/release/build目标会先构建依赖如 OpenCV 包装库见all-deps再进入 src/Makefile.in 编译ultrastardx.dpr。FPC 单元.ppu/.o统一输出到build/fpc-processor-platform目录默认 release 模式启用-O2 -OoNOSTACKFRAMEdebug 模式启用-g -dDEBUG_MODEWindows 下默认追加-WG以生成无控制台窗口的 GUI 程序debug 构建保留控制台便于查看日志。3.3 macOS 特殊目标文档指出 macOS 构建使用make macos-standalone-app。从 Makefile.in 可以看到完整打包链路macos-app生成UltraStarDeluxe.app骨架——写入图标 icons/ultrastardx.icns、安装 src/macos/Info.plist、递归拷贝 avatars/covers/fonts/languages/sounds/themes 等资源、创建 songs 目录macos-standalone-app调用 Makefile.macos-helper 借助otool/install_name_tool收集并内嵌所有动态库使应用可在未安装依赖的机器上直接运行macos-dmg用hdiutil制作带UltraStarDeluxe.app的 DMG 镜像。3.4 configure 开关文档原文 源码展开--enable-debug开启 debug 构建。效果把Error.log中的警告与错误同时输出到控制台并在发生EAccessViolation时打印栈回溯。源码层面对应 configure.ac 的ENABLE_DEBUG替换以及 src/Makefile.in 中 debug 模式的-g -dDEBUG_MODE编译参数。--with-portaudio默认使用 PortAudio 进行音频输入麦克风采集。--without-portaudio改用 SDL 音频输入。文档指出其优点对 PulseAudio、PipeWire 等新式平台支持更好可能修复某些发行版上 PortAudio 的已知问题局限在 PulseAudio 下可能无法正确检测声道数量。 从源码看这对应 configure.ac 的--with-portaudio探测项默认check最终影响 src/switches.inc 中UsePortaudioInput/UseSDLInput的定义进而决定 src/media 下加载 UAudioInput_Portaudio.pas 还是 UAudioInput_SDL.pas。--with-opencv启用 OpenCV 摄像头支持。configure 默认自动检测 OpenCV 3找不到则自动禁用 webcam对应 configure.ac 的默认check语义与 OpenCV not found; webcam support disabled 提示。--without-opencv即使系统已安装 OpenCV也强制不编译摄像头支持对应with_OpenCVno分支直接跳过整个 OpenCV 探测段。另有两个文档中提及的已废弃开关源码注释为DEPRECATED, DO NOT USE--enable-global与--enable-local。configure 遇到它们会打印提示全局安装直接make make install本地运行直接make后启动game/ultrastardx见 configure.ac。与文档相邻的 configure 帮助中还列出了 --disable-portmidi、--with-porttime、--enable-midiemuLinux/macOS 默认开启的内置 MIDI 模拟后端等可选能力均可通过./configure --help查看。3.5 其他常用 make 目标make install/make install-strip按 autoconf 目录约定安装二进制、插件与全部数据资源Makefile.in安装路径可用prefix等变量覆盖make clean/mostlyclean/distclean分级清理distclean还会删除config.log、config.status、生成的src/config.inc与 Makefilemake deb直接基于DESTDIR打包成 Debian 安装包依赖 debian 目录中的 control 等文件make whitespace-checkCI 使用的空白字符检查排除src/lib与src/webSDK。四、方式三Linux 下用 flatpak-builder 构建 FlatpakFlatpak 清单并不在本仓库而在独立的 Flathub 清单仓库中git clone --recurse-submodules https://github.com/flathub/eu.usdx.UltraStarDeluxe manifest-dir关键注意事项均来自 COMPILING.md 原文清单默认基于org.freedesktop.Platform 23.08运行时主流架构均可用若你的架构没有该运行时可在清单中降低版本降到 23.08 以下时可能需要自行构建 FFmpeg 与 dav1d 以保持较好的格式支持若把清单改为引用本机硬盘上的 USDX 源码树构建必须在该源码树之外进行——因为 flatpak-builder 会把整个源码树拷贝进构建目录flatpak-builder 会在其调用目录下创建隐藏的.flatpak-builder缓存目录存放下载与构建结果添加 Flathub remote若尚未配置flatpak remote-add --user flathub https://flathub.org/repo/flathub.flatpakrepo一键构建并安装flatpak-builder --user --install-deps-fromflathub --install build manifest-dir/eu.usdx.UltraStarDeluxe.yaml构建完成后.flatpak-builder与build目录可删除歌曲目录位置Flatpak 沙箱隔离所致与普通构建不同~/.var/app/eu.usdx.UltraStarDeluxe/.ultrastardx/songs五、Windows 安装器与便携版制作CI 通常已自动完成此流程手动复现步骤如下文档原文补齐 DLL从 MXE 仓库的对应 release 中取一套匹配的 DLL放入game目录也可用 dldlls.py 自动下载制作便携版将game目录整体打成 zip 即得到 Windows 便携版制作 NSIS 安装器安装 NSIS安装时务必勾选 Graphics 与 Language 组件把game中的 DLL 复制到installer/dependencies/dll执行C:\...\makensis installer/UltraStar Deluxe.nsi构建较耗时生成的.exe位于installer/dist。仓库中与安装器相关的素材主脚本 installer/UltraStar Deluxe.nsi 与 installer/Update.nsi、共享函数库 installer/settings/functions.nsh、文件清单 installer/settings/files_main_install.nsh 与卸载清单 installer/settings/files_main_uninstall.nsh、多语言翻译installer/languages 下的 English/German/Hungarian/Polish/Portuguese/Spanish.nsh以及 installer/UAC.nsh 权限提升支持。图标资源见 res 与 installer/install.ico。六、编译常见问题速查现象排查方向编译报各种诡异错误大概率是残留的旧版 FPC 未清理干净卸载后重装 FPC 3.0./configure报 fpc … required in at least version 3.0.0FPC 版本过旧升级到 3.0.0 以上见 configure.acconfigure 报 pkg-config was not found安装 pkg-config它是探测各库版本的必需工具FFmpeg 报 Unsupported ffmpeg version当前仅支持 4.0 ~ 9.0安装范围内的版本make时链接找不到库对照各平台依赖清单检查 pkg-config 包是否装全macOS 需确认 Homebrew 安装及 lib 路径webcam 不可用但 OpenCV 已安装configure 默认check需显式--with-opencv且必须有可用 C 编译器来构建 src/lib/openCV3 包装层Linux 下麦克风异常尝试--without-portaudio切到 SDL 音频输入对 PulseAudio/PipeWire 兼容性更好七、小结USDX 的编译体系是一套典型的FPC autotools工程Lazarus 面向日常开发调试make/configure 面向发行版打包与持续集成flatpak-builder 面向 Flatpak 分发NSIS 面向 Windows 用户。理解 configure.ac 中各开关与 src/config.inc.in/src/switches.inc 的联动关系就能在遇到音频后端、摄像头、可视化等特性问题时快速定位是没编译进去还是运行期缺库。官方文档 COMPILING.md 是权威的步骤来源本文在此基础上补充了源码级证据供开发者深入排查。赞分享游戏开发音视频桌面应用【免费下载链接】USDXThe free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStar™项目地址https://gitcode.com/gh_mirrors/us/USDX点击查看免费下载相关推荐UltraStar DeluxeUSDX上手指南安装配置、config.ini 详解与源码编译全流程UltraStar DeluxeUSDX上手指南安装配置、config.ini 详解与源码编译全流程 导读 UltraStar Deluxe简称 USD游戏开发音视频桌面应用UltraStar DeluxeUSDX开发者指南从编译环境到引擎架构与代码地图UltraStar DeluxeUSDX开发者指南从编译环境到引擎架构与代码地图 本文是面向 UltraStar DeluxeUSDX开发者的入门技术游戏开发音视频桌面应用UltraStar DeluxeUSDXWindows DLL 更新与发布维护指南基于 mxe 仓库的完整流程UltraStar DeluxeUSDXWindows DLL 更新与发布维护指南基于 mxe 仓库的完整流程 导读 本文以 USDX 仓库中的 UPDA游戏开发音视频桌面应用上一篇零门槛搞定抖音视频下载douyin-downloader 开源工具一学就会下一篇深入 Monolog 扩展机制在 Laravel 样例工程中编写自定义 Handler 与源码级原理剖析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考