Сборка из исходного кода
Требования
Заголовок раздела «Требования»| Инструмент | Назначение |
|---|---|
| Git | Клонирование репозитория с подмодулями |
| CMake 3.28+ | Конфигурация сборки |
| Ninja | Бэкенд сборки |
| GCC или Clang (gcc/g++ или clang/clang++) | Компилятор хоста |
| Zig | Только для кросс-сборок (он несёт собственную libc) |
| Visual Studio 2022+ (инструменты C/C++) | Только для нативных сборок на Windows |
Получение исходников
Заголовок раздела «Получение исходников»git clone --recursive https://github.com/yapb/yapbcd yapbПодмодули (ystl с вложенным mbedtls, linkage) обязательны. Если вы уже склонировали без --recursive, выполните git submodule update --init --recursive.
Сборка через build.sh (Рекомендуется)
Заголовок раздела «Сборка через build.sh (Рекомендуется)»build.sh - хелпер-скрипт, оборачивающий CMake-пресеты:
# нативная dev-сборка (компилятор хоста, zig не нужен)./build.sh
# кросс-сборка под конкретную цель через zig./build.sh --arch=linux-x86
# нативная сборка clang'ом с оптимизацией под эту машину, 8 параллельных задач./build.sh -c=clang --native -j=8Доступные опции:
| Опция | Описание |
|---|---|
--arch=<preset> |
Пресет сборки (по умолчанию: release). Кросс-пресеты требуют zig в PATH |
-c= / --compiler= |
C/C++ компилятор хоста для нативных сборок (gcc или clang) |
-j= / --jobs= |
Количество параллельных задач сборки (по умолчанию: автоопределение ninja) |
--native |
Оптимизация под эту машину (-march=native) |
--skip-checks |
Пропустить проверку окружения |
-D<Var>=<Val> |
Дополнительные CMake-определения, передаваемые на этап конфигурации |
Сборка напрямую через CMake
Заголовок раздела «Сборка напрямую через CMake»Пресеты повторяют матрицу CI, поэтому можно управлять CMake напрямую:
# нативная dev-сборкаcmake --preset releasecmake --build --preset releaseГруппы пресетов:
- Локальные пресеты (компилятор хоста, zig не нужен):
release,dist,linux-amd64-asan,linux-x86-asan,vs-x86,vs-x64(Visual Studio),winxp-mingw - Кросс-пресеты (нужен zig в PATH):
ci-linux-x86,ci-linux-amd64,ci-linux-x86-nosimd,ci-linux-arm64,ci-linux-riscv64,ci-apple-amd64,ci-windows-x86-clang,ci-windows-x86-mingw,ci-windows-amd64 - Пресеты только для CI (их раннеры, не для локального использования):
ci-apple-arm64,ci-windows-x86,ci-windows-x86-clang-cl,ci-windows-x86-msvc-xp - Тестовые пресеты (юнит-тесты, только нативный компилятор):
windows-tests,linux-tests
Полная матрица - в CMakePresets.json.
Сборка на Linux
Заголовок раздела «Сборка на Linux»-
Установите требования:
Окно терминала sudo apt updatesudo apt install git cmake ninja-build gcc g++ gcc-multilib g++-multilib -
Получите исходники (см. выше)
-
Соберите:
Окно терминала ./build.sh -
Готово! Собранная библиотека находится в
build/release/yapb.so(каждый пресет собирается вbuild/<preset>)
Сборка на Windows
Заголовок раздела «Сборка на Windows»-
Установите Visual Studio с рабочей нагрузкой C/C++
-
Получите исходники (см. выше)
-
Либо откройте
vc/yapb.slnв Visual Studio и соберите, либо используйте кросс-пресеты через Zig из bash-шелла (Git Bash/WSL):Окно терминала ./build.sh --arch=windows-x86-clang -
Готово! Собранная библиотека находится в
build/release/yapb.dllдля нативных сборок или вbuild/ci-windows-x86-clang/yapb.dllдля кросс-пресета
Опции сборки
Заголовок раздела «Опции сборки»Эти опции CMake можно передать через -D<Var>=<Val> (или через build.sh -D<Var>=<Val>):
| Опция | По умолчанию | Описание |
|---|---|---|
YAPB_64BIT |
OFF |
Собрать 64-битный бинарник |
YAPB_NATIVE |
OFF |
Настроить компилятор для нативной сборки под машину (-march=native) |
YAPB_WINXP |
OFF |
Настроить MSVC-сборку бинарника, совместимого с Windows XP |
YAPB_NOSIMD |
OFF |
Отключить все оптимизации SIMD/NEON |
YAPB_STATIC_LINKENT |
OFF |
Использовать предопределённый список связей сущностей |
YAPB_LTO |
ON |
Включить link-time оптимизацию |
YAPB_SANITIZE |
(пусто) | Включить санитайзеры, например address или address,undefined (dev-сборки) |
YAPB_WITH_TLS |
ON |
Включить поддержку HTTPS через vendored mbedtls |
YAPB_BUILD_TESTS |
OFF |
Собрать тестовый хост (фейковый движок, только нативный gcc/clang 64-бит, требует -DYAPB_64BIT=ON) |
YAPB_WITH_AMXX |
ON |
Собрать модуль AMX Mod X (только i386) |