Ubuntu上编译 - Fluorohydride/ygopro GitHub Wiki

YGOPro Ubuntu 编译指南

1. 准备工作

1.1 所需软件

  • YGOPro发行版

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

  • build-essential

  • Premake

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

1.2 依赖库

通过apt安装以下系统依赖库:

sudo apt install libevent-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libxxf86vm-dev libsqlite3-dev libopusfile-dev libvorbis-dev

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

  • Irrlicht

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

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

    • 因项目特点,无法通过APT等包管理器安装,需要静态编译
    • 仅支持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 生成项目文件

下载premake5可执行文件,给予执行权限并运行:

chmod +x premake5
./premake5 gmake

这将在build文件夹中生成Makefile。

3.2 目录结构

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

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

3.3 编译项目

在项目根目录运行:

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 ./ygopro
    # 或 ln -s bin/debug/YGOPro ./ygopro
    
  3. 运行 ./ygopro

5. 常见问题

编译常见问题