依赖项¶
要构建 Eden,你必须拥有一个 C++ 编译器。
- 在 Linux 上,通常是 GCC 11+ 或 Clang v14+
- GCC 12 还需要 Clang 14+
- 在 Windows 上,我们支持:
- MSVC(默认)
- 强烈建议使用 Community 选项和 Visual Studio 2022
- 你需要安装:使用 C++ 的桌面开发
- 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 的外部依赖处理:
如果启用了 YUZU_USE_CPM,所有其他依赖项都将由 CPM 下载并构建;但如果系统提供了依赖项,则始终优先使用系统依赖项(仅限类 UNIX 系统):
- Boost 1.57.0+
- Catch2 3.0.1(如果启用了
YUZU_TESTS或DYNARMIC_TESTS) - fmt 8.0.1+
- lz4
- nlohmann_json 3.8+
- OpenSSL 3+
- ZLIB 1.2+
- zstd 1.5+
- enet 1.3+
- Opus 1.3+
还需要 Vulkan 1.3.274+:
某些其他依赖项无论如何都会由 CPM 获取。这些库可以使用系统包,但其中许多要么未被大多数发行版打包,要么在由系统使用时存在问题:
- SimpleIni
- DiscordRPC
- cubeb
- libusb
- VulkanMemoryAllocator
- sirit
- httplib - 如果启用了
ENABLE_UPDATE_CHECKER或ENABLE_WEB_SERVICE - 已知该包在 AUR 上存在问题。
- cpp-jwt 1.4+ - 如果启用了
ENABLE_WEB_SERVICE
在 amd64 上:
- xbyak - 建议使用 7.22 或更早版本
在 aarch64 上,或者如果启用了 DYNARMIC_TESTS:
- oaknut 2.0.1+
在 riscv64 上:
- biscuit 0.9.1+
命令¶
以下是在各种 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 widgetsdev-libs/quazip qt6media-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 运行,请安装额外依赖:
注意事项.
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
注意事项。
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
注意事项。
全部完成¶
你现在可以返回 根构建指南。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 eg/Eglantine