从源码构建 mGBA
本指南说明如何从源代码编译 mGBA。从源码构建允许您使用最新的开发版本、自定义构建或为项目做出贡献。
先决条件
必需工具
- CMake 3.1 或更高版本: 构建系统生成器
- C 编译器: GCC 4.9+、Clang 3.4+ 或 MSVC 2015+
- Git: 版本控制系统
依赖项
- SDL2: 跨平台多媒体库(2.0.8 或更高版本)
- Qt5: GUI 工具包(可选,用于 Qt GUI)
- libpng: PNG 图像库
- zlib: 压缩库
- lua: Lua 脚本库(5.4,可选)
获取源代码
克隆存储库
git clone https://github.com/mgba-emu/mgba.git cd mgba
更新子模块
git submodule update --init --recursive
在 Windows 上构建
使用 Visual Studio
- 安装 Visual Studio 2015 或更高版本(支持 C++)
- 安装 CMake 并添加到 PATH
- 运行 CMake GUI 或使用命令行:
mkdir build cd build cmake .. -G "Visual Studio 16 2019" -A x64 cmake --build . --config Release
使用 MinGW
mkdir build cd build cmake .. -G "MinGW Makefiles" cmake --build .
在 macOS 上构建
使用 Xcode
- 安装 Xcode 命令行工具:
xcode-select --install - 通过 Homebrew 安装依赖项:
brew install cmake sdl2 libpng zlib lua
然后构建:
mkdir build cd build cmake .. -G Xcode cmake --build . --config Release
在 Linux 上构建
Ubuntu/Debian
安装依赖项:
sudo apt-get update sudo apt-get install build-essential cmake libsdl2-dev libqt5opengl5-dev qtbase5-dev libpng-dev zlib1g-dev liblua5.4-dev
构建:
mkdir build cd build cmake .. make -j4
Fedora
sudo dnf install gcc cmake SDL2-devel qt5-qtbase-devel libpng-devel zlib-devel lua-devel mkdir build && cd build cmake .. make -j4
Arch Linux
sudo pacman -S cmake sdl2 qt5-base libpng zlib lua mkdir build && cd build cmake .. make -j4
CMake 选项
配置构建选项:
- USE_QT: 启用 Qt GUI(ON/OFF,默认:ON)
- USE_SDL: 启用 SDL 前端(ON/OFF,默认:ON)
- USE_DEBUGGERS: 启用调试器支持(ON/OFF,默认:ON)
- USE_LUA: 启用 Lua 脚本(ON/OFF,默认:ON)
- BUILD_GL: 构建 OpenGL 渲染器(ON/OFF,默认:ON)
cmake .. -DUSE_QT=ON -DUSE_SDL=ON -DUSE_LUA=ON
安装
构建后,安装 mGBA:
# Linux/macOS sudo cmake --install . --prefix /usr/local # 或安装到自定义位置 cmake --install . --prefix ~/local
故障排除构建问题
缺少依赖项
如果 CMake 报告缺少依赖项:
- 使用包管理器安装缺少的包
- 确保安装了开发头文件(不仅仅是运行时库)
- 使用
pkg-config验证依赖项安装
构建错误
常见的构建错误和解决方案:
- 编译器错误: 将编译器更新到支持的版本
- 链接器错误: 确保所有依赖项都已安装
- CMake 错误: 将 CMake 更新到 3.1 或更高版本
- Git 子模块问题: 运行
git submodule update --init --recursive
需要帮助? 如果您遇到构建问题,请在 GitHub Issues 中查找类似问题或在 GitHub Discussions 中寻求帮助。
相关文章
有关 mGBA 开发的更多信息:
- 贡献给 mGBA - 贡献代码、错误报告和文档的指南
- 架构概述 - 了解 mGBA 的代码库结构、组件和设计原则
- Lua 脚本 API - Lua 脚本接口的 API 文档
- 故障排除指南 - 常见问题和解决方案