跳转至

依赖项

要构建 Eden,你必须拥有一个 C++ 编译器。

  • 在 Linux 上,通常是 GCC 11+ 或 Clang v14+
  • GCC 12 还需要 Clang 14+
  • 在 Windows 上,我们支持:
  • MSVC(默认)
  • clang-cl
    • 你需要安装:C++ Clang tools for Windows
  • MSYS2
  • 在 macOS 上,这是 Apple Clang
  • 可通过 xcode-select --install 安装

以下附加工具也是必需的:

  • CMake 3.31+ - 已包含在 Android SDK 中
  • Git,用于版本控制
  • Windows 安装程序
  • Python3 3.10+ - 用于下载外部仓库
  • 在 Windows 上,你还必须安装 Vulkan SDK
  • 以下位置提供了用于安装最新 SDK 的便捷脚本:
    • tools/windows/install-vulkan-sdk.ps1(适用于 PowerShell 5+)
    • tools/windows/install-vulkan-sdk.sh(适用于 Git Bash 等)

如果你在桌面平台并打算使用 Qt 前端,则必须安装 Qt 6,还可以选择安装 Qt Creator(构建时推荐使用的 IDE)。

  • 在 Linux、*BSD 和 macOS 上,可以通过包管理器完成此项操作
  • 如果你希望使用 Qt Creator,请在下面看到的命令末尾追加 qtcreator 或 qt-creator。
  • Windows 上的 MSVC/clang-cl 用户必须通过官方 Qt 安装程序安装
  • Linux 和 macOS 用户也可以选择使用该安装程序。
  • MSYS2 也可以通过包管理器安装 Qt 6

  • 有关设置 Qt Creator 的帮助,请运行 ./install.sh -h qtcreator

  • 如果你正在使用 clang-cl 但仍想使用 MSVC

  • 在 Visual Studio 安装程序中勾选“C++ clang compiler for Windows”选项,并在选择“C++ desktop developement tools”时取消勾选“x64/x86 build tool for MSVC”,同时将 Visual Studio 从 2022 改为 2026。
  • 在 Qt Creator 的生成器选项卡中,将 Visual Studio 17 2022 改为 2026。
  • 最后,要使用 clang-cl:cmake -S . -B build -G "Visual Studio 17 2026" -T ClangCL

如果你在 Windows 上并使用 MSVC 或 clang-cl 构建,你可以返回主页并继续。

外部依赖

以下内容由 Eden 的外部依赖处理:

  • FFmpeg(应使用 -DYUZU_USE_EXTERNAL_FFMPEG=ON)
  • SDL3 3.2.10+(使用 -DYUZU_USE_BUNDLED_SDL2=ON 可减少编译时间)

如果启用了 YUZU_USE_CPM,所有其他依赖项都将由 CPM 下载并构建;但如果系统提供了依赖项,则始终优先使用系统依赖项(仅限类 UNIX 系统):

还需要 Vulkan 1.3.274+:

某些其他依赖项无论如何都会由 CPM 获取。这些库可以使用系统包,但其中许多要么未被大多数发行版打包,要么在由系统使用时存在问题:

在 amd64 上:

  • xbyak - 建议使用 7.22 或更早版本

在 aarch64 上,或者如果启用了 DYNARMIC_TESTS:

在 riscv64 上:

命令

以下是在各种 Linux 和 BSD 发行版以及 macOS 上安装所有必需依赖项的命令。在按回车之前,请务必检查你要运行的内容!

给编写者的说明:同时包含构建工具,假设用户什么都没安装(即全新安装),但已经提前更新过系统,因此不应提及 upgrade && update 或等效命令——除非是像 Arch 这样的滚动发布系统。

点击箭头以展开。

Gentoo Linux

必须启用 GURU:

sudo emerge -a app-eselect/eselect-repository
sudo eselect repository enable guru
sudo emaint sync -r guru

现在,安装所有依赖项:

sudo emerge -a \
    app-arch/lz4 app-arch/zstd app-arch/unzip \
    dev-libs/libfmt dev-libs/libusb dev-libs/mcl dev-libs/sirit \
    dev-libs/boost dev-libs/openssl dev-libs/discord-rpc \
    dev-util/spirv-tools dev-util/spirv-headers dev-util/vulkan-headers \
    dev-util/vulkan-utility-libraries dev-util/glslang \
    media-gfx/renderdoc media-libs/libva media-libs/opus media-video/ffmpeg \
    media-libs/VulkanMemoryAllocator media-libs/libsdl3 media-libs/cubeb \
    net-libs/enet \
    sys-libs/zlib \
    dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \
    games-util/gamemode \
    net-wireless/wireless-tools \
    dev-qt/qtbase:6 dev-libs/quazip \
    virtual/pkgconfig
  • 在 amd64 上,还需添加 dev-libs/xbyak
  • 在 riscv64 上,还需添加 dev-libs/biscuit(目前不可用)
  • 在 aarch64 上,还需添加 dev-libs/oaknut
  • 如果启用了测试,还需添加 dev-libs/oaknut 和 dev-cpp/catch

所需的 USE 标志:

  • dev-qt/qtbase network concurrent dbus gui widgets
  • dev-libs/quazip qt6
  • media-libs/libsdl3 haptic joystick sound video
  • 建议添加 X vulkan udev opengl,但并非必需
  • dev-cpp/cpp-httplib ssl

注意事项

Arch Linux
sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 ninja nlohmann-json openssl opus qt6-base qt6-multimedia qt6-charts sdl3 zlib zstd zip unzip vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers
  • 使用 QT Web Engine 构建还需要 qt6-webengine。
  • 完整的 Wayland 支持需要 qt6-wayland
  • 需要 GCC 11 或更高版本。
Ubuntu, Debian, Mint Linux
sudo apt-get install autoconf cmake g++ gcc git glslang-tools libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev qt6-charts-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libboost-context-dev libsdl3-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev
  • 需要 Ubuntu 26.04、Linux Mint 22.3 或 Debian 13 或更高版本。
  • 要启用 QT Web Engine,请在运行 CMake 时添加 -DYUZU_USE_QT_WEB_ENGINE=ON。
AlmaLinux, Fedora, Red Hat Linux

Fedora:

sudo dnf install autoconf cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel qt6-charts-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel boost jq

AlmaLinux(使用 YUZU_USE_CPM=ON):

# vvv - Only if RPMfusion is not installed or EPEL isn't either
sudo dnf install epel-release dnf-utils
# (run rpmfusion installation afterwards)
# vvv - This will work for most systems
sudo dnf install autoconf cmake libtool libudev cmake gcc gcc-c++ qt6-qtbase-devel zlib-devel openssl-devel boost SDL3 ffmpeg-devel libdrm glslang jq patch
# Qt6 private GUI must be taken from CRB repos
sudo dnf config-manager --enable crb
sudo dnf install qt6-qtbase-private-devel

对于 OpenEuler 或衍生系统,不要忘记同时安装:SDL3-devel pkg-config fmt-dev nlohmann-json-dev。

  • 安装 ffmpeg-devel 需要 RPM Fusion
  • 需要 Fedora 32 或更高版本。
  • Fedora 36+ 且使用 GCC 12 的用户需要 Clang,并使用以下命令配置 CMake:cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build
Alpine Linux

首先,启用社区仓库;参见此处。

# Enable the community repository
setup-apkrepos -c
# Install
apk add g++ git cmake make mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libquazip1-qt6 ffmpeg-dev qt6-charts-dev libusb-dev libtool boost-dev sdl3-dev zstd-dev vulkan-utility-libraries spirv-tools-dev openssl-dev nlohmann-json lz4-dev opus-dev jq patch
Void Linux
xbps-install -Su git make cmake clang pkg-config patch SPIRV-Tools-devel SPIRV-Headers lz4 liblz4-devel boost-devel ffmpeg6-devel catch2 Vulkan-Utility-Libraries Vulkan-Headers glslang openssl-devel SDL3-devel quazip-qt6-devel qt6-base-devel qt6-qt5compat-devel qt6-charts-devel fmt-devel json-c++ libenet-devel libusb-devel

是的,nlohmann-json 就叫 json-c++。为什么?

NixOS

本项目的根目录提供了一个便捷脚本 shell.nix。运行常规的 nix-shell。

如果你要进行纯构建(即不下载依赖),请使用 -DYUZU_USE_CPM=ON -DCPMUTIL_FORCE_SYSTEM=ON。

macOS

从 Homebrew 安装依赖

brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl3 speexdsp zlib zstd cmake Catch2 molten-vk vulkan-loader spirv-tools vulkan-utility-libraries

如果你在 Intel Mac 上编译,或使用 Rosetta Homebrew 安装,则必须将所有 /opt/homebrew 引用替换为 /usr/local。

若要使用 MoltenVK 运行,请安装额外依赖:

brew install molten-vk

注意事项.

FreeBSD

以 root 身份运行:

pkg install devel/cmake devel/sdl3 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base x11-toolkits/qt6-charts devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib graphics/vulkan-utility-libraries graphics/vulkan-headers graphics/spirv-headers quazip-qt6

如果使用 FreeBSD 12 或更早版本,请改用 devel/pkg-config。

注意事项.

NetBSD

对于 NetBSD +10.1:

pkgin install git cmake boost fmtlib SDL3 catch2 libjwt spirv-headers spirv-tools ffmpeg7 libva nlohmann-json jq libopus qt6-qtbase qt6-qtcharts qt6-qtmultimedia qt6-qttools cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1 libcxx frozen

注意事项。

OpenBSD
pkg_add -u
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl3 libusb1-1.0.29 quazip-qt6

注意事项。

DragonFlyBSD
pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmake jq nlohmann-json enet spirv-tools sdl3 vulkan-utility-libraries vulkan-headers catch2 libfmt openssl liblz4 boost-libs cpp-httplib qt6-base qt6-charts quazip-qt6 libva-vdpau-driver libva-utils libva-intel-driver

注意事项。

OpenIndiana
sudo pkg install git cmake qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl3 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt

注意事项。

OmniOS
sudo pkgin install git cmake autoconf build-essential libusb-1 nasm gcc13

注意事项。

MSYS2
  • 打开 MSYS2 MinGW 64-bit 终端(mingw64.exe)
  • 下载并安装所有依赖项:
BASE="git make autoconf libtool automake-wrapper jq patch"
MINGW="qt6-base qt6-charts qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus libusb openssl SDL3"
# Either x86_64 or clang-aarch64 (Windows on ARM)
packages="$BASE"
for pkg in $MINGW; do
    packages="$packages mingw-w64-x86_64-$pkg"
    #packages="$packages mingw-w64-clang-aarch64-$pkg"
done
pacman -Syuu --needed --noconfirm $packages
  • 注意:
  • 也可以使用 qt6-static,前提是你使用 -DYUZU_STATIC_BUILD=ON 进行构建。
  • 其他环境完全没有经过测试,但只要你安装了所有必要的软件包,理论上应该可以工作。
  • 事实证明,GCC 在 MinGW 环境中表现更好。在 ARM 上,只有通过 CLANGARM64 环境才能使用 Clang,因此在 GNU ARM 环境可用之前,请使用该环境。
  • 将 qt-creator 添加到 MINGW 变量中以安装 Qt Creator。然后,你可以通过在 Git Bash 或 MSYS2 中运行 powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()" 来创建指向 MinGW Qt Creator 的“开始”菜单快捷方式。
  • 如果 MinGW 二进制文件尚未添加到 PATH,请添加:
  • echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc
  • 或 echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc

注意事项。

HaikuOS
pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.90_devel vulkan_devel qt6_base_devel qt6_declarative_devel libsdl3_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt5_devel qt6_5compat_devel glslang qt6_devel qt6_charts_devel cubeb_devel simpleini quazip_qt6_devel

注意事项。

RedoxOS
sudo pkg update
sudo pkg install git cmake ffmpeg6 zlib llvm18

RedoxOS 目前不支持 SDL3。你必须自己编译它,然后祈祷好运。

注意事项。

全部完成

你现在可以返回 根构建指南。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine