首页
/ MAME项目编译指南:从基础到进阶

MAME项目编译指南:从基础到进阶

2025-07-06 07:43:18作者:秋泉律Samson

前言

MAME(Multiple Arcade Machine Emulator)是一个开源的街机游戏模拟器项目,支持数千种经典游戏系统的模拟。本文将详细介绍如何在不同平台上编译MAME源代码,帮助开发者构建自己的MAME版本。

基础编译要求

编译器要求

编译MAME需要满足以下基本条件:

  1. C++17兼容编译器:支持GCC 10.3+或Clang 11+版本
  2. 标准库:GNU libstdc++ 10.3+或libc++ 11+
  3. 注意事项
    • 避免使用GCC主要版本的初始发布版(如GCC 12.0)
    • 建议使用稳定的小版本(如GCC 12.1+)

编译参数说明

参数 作用 示例
REGENIE=1 强制重新生成项目文件 make REGENIE=1
TOOLS=1 包含额外工具(如chdman) make TOOLS=1
SYMBOLS=1 包含调试符号(增加体积) make SYMBOLS=1
-jN 并行编译(N=核心数+1) make -j5

子系统编译技巧

MAME支持仅编译特定系统的模拟器,这可以显著减少编译时间和输出体积:

# 仅编译Pac-Man相关系统
make SUBTARGET=pacem SOURCES=src/mame/pacman REGENIE=1 -j4

# 仅编译Apple II系列
make SUBTARGET=appulator SOURCES=apple/apple2.cpp,apple/apple2e.cpp REGENIE=1 -j4

注意:修改SOURCES后若遇到链接错误,需删除build目录下对应的静态库文件。

Windows平台编译指南

MSYS2环境准备

  1. 推荐配置

    • Windows 7+系统(64位推荐)
    • 最新版MSYS2环境
  2. 可选组件

    • SDL2接口:添加OSD=sdl参数
    • Qt调试器:添加USE_QTDEBUG=1参数

标准MSYS2安装步骤

  1. 安装基础工具:

    pacman -Syu
    pacman -S curl git make
    
  2. 按架构安装工具链:

    # x86_64
    pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-python
    pacman -S mingw-w64-x86_64-llvm mingw-w64-x86_64-libc++ mingw-w64-x86_64-lld
    
    # i686
    pacman -S mingw-w64-i686-gcc mingw-w64-i686-python
    pacman -S mingw-w64-i686-llvm mingw-w64-i686-libc++ mingw-w64-i686-lld
    

Visual Studio编译

  1. 生成VS2022项目:

    make vs2022
    
  2. 项目文件位置:build/projects/windows/mame/vs2022

注意:MSYS2环境仍是必需的,用于生成项目文件和资源处理。

Linux平台编译

Fedora

安装依赖:

sudo dnf install gcc gcc-c++ SDL2-devel SDL2_ttf-devel libXi-devel

Ubuntu/Debian

安装依赖:

sudo apt-get install git build-essential python3 libsdl2-dev libsdl2-ttf-dev

Arch Linux

安装依赖:

sudo pacman -S base-devel git sdl2_ttf python

macOS平台编译

准备工作

  1. 系统要求:macOS 11.0 Big Sur+
  2. 必需组件:
    • Xcode(App Store或开发者网站)
    • SDL2 2.0.14+
    • Python 3

安装步骤

  1. 安装Xcode命令行工具:

    xcode-select --install
    
  2. 安装SDL2框架到系统目录

编译优化建议

  1. 并行编译:使用-jN参数(N=CPU核心数+1)
  2. 调试版本:仅开发时使用SYMBOLS=1
  3. 体积控制:通过SOURCES参数限制编译范围
  4. 工具链选择:LLVM工具链通常比GNU更快

常见问题

  1. 项目文件更新:修改编译参数后必须使用REGENIE=1或touch Makefile
  2. Windows符号限制:完整调试版本可能超过PE格式限制
  3. 32位构建:需特别注意内存限制

通过本指南,开发者应能成功在各种平台上编译MAME项目,并根据需求定制自己的构建版本。