Building BestClient 1.9.1 beta from source gives you full control over the compiled output — enabling custom flags, headless builds, and local patches. The project is a C++20/Rust/Python codebase driven by CMake and assembled with Ninja, so you will need a matching toolchain before invoking any build commands. This page walks through every required and optional tool, with platform-specific install instructions, so you can reach a clean CMake configure step on Linux, Windows, or macOS.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BestProjectTeam/BestClient/llms.txt
Use this file to discover all available pages before exploring further.
Required Tools
| Tool | Minimum Version | Notes |
|---|---|---|
| CMake | 3.12 | cmake_minimum_required(VERSION 3.12...3.27.4) in CMakeLists.txt |
| Ninja | Any recent | Required by all documented build commands (-G Ninja) |
| C++ compiler | C++20 capable | GCC / Clang on Linux & macOS; MSVC on Windows |
| Rust & Cargo | Stable | Workspace members in src/base, src/engine, src/engine/shared, src/rust-bridge/test |
| Python 3 | Any recent 3.x | Used by code-generation scripts; CMake will error if absent |
| Git | Any with submodule support | Needed to clone and initialize vendored submodules |
CMake enforces all of the above at configure time. If Python 3, Rust/Cargo, or several system libraries (libcurl, libpng, SQLite3) are missing, the configure step will emit a fatal error and stop immediately.
Platform Installation
- Linux
- Windows
- macOS
The CI pipeline targets Ubuntu 22.04 with the following packages. Adjust package names for your distro (Arch, Fedora, etc.) as needed.Verify your toolchain after installing:
Git Submodules
BestClient ships vendored third-party libraries as Git submodules underddnet-libs/. These must be initialized before CMake can locate bundled headers and link libraries. Run the following command once after cloning, and again any time you pull commits that update submodule references:
Optional: Nix Flake Environment
Aflake.nix is included in the repository root. If you have Nix with flakes enabled, you can drop into a fully-provisioned development shell without touching your system packages:
SDL2, freetype, libGL, curl, openssl, vulkan-loader, libnotify) via autoPatchelfHook and makeWrapper. It is primarily oriented toward running pre-built binaries, but can serve as a convenient dependency sandbox during development on NixOS or systems with Nix installed.