macOS上编译 - Fluorohydride/ygopro GitHub Wiki

YGOPro macOS 编译指南

注意:macOS编译支持仍处于实验性阶段,欢迎贡献改进。

1. 准备工作

1.1 所需软件

  • YGOPro发行版

    • 用以获取卡片数据库和卡图等资源,其中数据库是必备的
  • Git

  • Homebrew

  • Command Line Tools for Xcode

    • 通常在安装Homebrew或Xcode时自动安装
    • 项目不使用Xcode IDE
  • Premake

    • 项目支持Premake和CMake两种构建系统,但CMake近期无人维护,推荐使用Premake

1.2 依赖库

通过Homebrew安装以下依赖:

brew install premake freetype libevent libx11 sqlite zlib

以下依赖库需要手动下载源代码并静态编译:

  • Irrlicht

    • 这是Irrlicht的修改版,增加了中文支持等功能
    • 不支持原版Irrlicht
  • Lua

    • 仅支持5.3.x和5.4.x版本
    • 需要使用C++编译而非默认的C编译,因此需要静态编译
  • miniaudio

    • 因项目特点,无法通过Homebrew等包管理器安装,需要静态编译
    • 仅支持0.11.22版本,且需使用其中的 miniaudio_split 版本

2. 获取源代码

2.1 克隆代码仓库

使用Git克隆代码仓库,确保包含所有子模块:

# 完整克隆代码及子模块(推荐方式)
git clone --recursive https://github.com/Fluorohydride/ygopro.git
cd ygopro

# 或分步操作
git clone https://github.com/Fluorohydride/ygopro.git
cd ygopro
git submodule update --init

# 切换子模块到正确分支
cd ocgcore
git checkout master 
cd ..
cd script
git checkout master 
cd ..

2.2 安装依赖库

  • 将下载的Irrlicht解压到项目根目录,并重命名为 irrlicht
  • 将下载的Lua解压到项目根目录,并重命名为 lua
  • 下载miniaudio,并将 miniaudio/extras/miniaudio_split 中的c和h文件复制到项目根目录中的 miniaudio 文件夹(请手动创建)

2.3 复制描述文件

将premake文件夹内所有子文件夹复制到项目根目录,这些文件夹包含了编译各个依赖库所需的premake描述文件。

cp -r premake/* .

3. 生成项目并编译

3.1 生成项目文件

使用Premake生成makefile:

premake5 gmake

如果是在Apple Silicon上编译,因为Homebrew把依赖库安装在了非标准的目录下,需要改为使用以下命令:

DYLD_LIBRARY_PATH=$(brew --prefix)/lib premake5 gmake

3.2 目录结构

配置成功后,项目目录结构大致如下(部分文件省略):

├── build
├── gframe
├── irrlicht
│   ├── include
│   └── source
│       └── Irrlicht
├── lua
│   └── src
├── miniaudio
├── ocgcore
├── script
├── sound
└── textures

3.3 编译项目

进入build目录并执行make命令:

cd build
make config=release # 或 make config=debug

编译完成后,生成的可执行文件位于 bin/releasebin/debug 目录下。

4. 运行与调试

4.1 基本运行

  1. 从YGOPro发行版中复制以下文件到项目根目录:

    • cards.cdb
    • pics 文件夹
    • deck 文件夹
  2. 建立符号链接以便于运行:

    ln -s bin/release/YGOPro.app ./ygopro
    # 或 ln -s bin/debug/YGOPro.app ./ygopro
    
  3. 运行 ./ygopro

4.2 使用App包

  1. 生成App包

    mkdir -p ygopro.app/Contents/MacOS
    cp ./bin/release/YGOPro.app ./ygopro.app/Contents/MacOS/ygopro
    
  2. 运行程序

    ./ygopro.app/Contents/MacOS/ygopro
    

    或者从访达中双击 ygopro.app 运行。

    程序会自动判断所在路径,选择正确的工作目录。

    因为App包未签名,第一次运行时可能会提示“无法打开,因为它来自身份不明的开发者”,需在系统设置中允许打开。

TODO: 目前程序工作方式并不像其他macOS应用那样。应把数据库和卡图等资源文件放到 Contents/Resources 目录下,把配置和卡组等文件放到用户目录下。

5. 常见问题

编译常见问题