Сборка из исходного кода
Требования
Заголовок раздела «Требования»| Инструмент | Назначение |
|---|---|
| Git | Клонирование репозитория с подмодулями |
| CMake 3.28+ | Конфигурация сборки |
| Ninja | Бэкенд сборки |
| GCC или Clang (gcc/g++ или clang/clang++) | Компилятор хоста |
| Zig | Только для кросс-сборок (он несёт собственную libc) |
| Visual Studio 2015+ (инструменты C/C++) | Только для нативных сборок на Windows |
Получение исходников
Заголовок раздела «Получение исходников»git clone --recursive https://github.com/yapb/yapbcd yapbПодмодули (crlib, linkage, mbedtls) обязательны. Если вы уже склонировали без --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 - Кросс-пресеты (нужен 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-amd64 - Пресеты только для CI (их раннеры, не для локального использования):
ci-apple-arm64,ci-windows-x86,ci-windows-x86-clang-cl,ci-windows-x86-msvc-xp
Полная матрица — в CMakePresets.json.
Сборка на Linux
Заголовок раздела «Сборка на Linux»-
Установите требования:
Окно терминала sudo apt updatesudo apt install git cmake ninja-build gcc g++ gcc-multilib g++-multilib -
Получите исходники (см. выше)
-
Соберите:
Окно терминала ./build.sh -
Готово! Собранная библиотека находится в
release/yapb.so(каждый пресет собирается в директорию, названную его же именем)
Сборка на Windows
Заголовок раздела «Сборка на Windows»-
Установите Visual Studio с рабочей нагрузкой C/C++
-
Получите исходники (см. выше)
-
Либо откройте
vc/yapb.slnв Visual Studio и соберите, либо используйте кросс-пресеты через Zig из bash-шелла (Git Bash/WSL):Окно терминала ./build.sh --arch=windows-x86-clang -
Готово! Собранная библиотека находится в
release/yapb.dllдля нативных сборок или вwindows-x86-clang/yapb.dllдля кросс-пресета
Опции сборки
Заголовок раздела «Опции сборки»Эти опции CMake можно передать через -D<Var>=<Val> (или через build.sh -D<Var>=<Val>):
| Опция | По умолчанию | Описание |
|---|---|---|
64BIT |
OFF |
Собрать 64-битный бинарник |
NATIVE |
OFF |
Настроить компилятор для нативной сборки под машину (-march=native) |
WINXP |
OFF |
Настроить MSVC-сборку бинарника, совместимого с Windows XP |
NOSIMD |
OFF |
Отключить все оптимизации SIMD/NEON |
STATIC_LINKENT |
OFF |
Использовать предопределённый список связей сущностей |
LTO |
ON |
Включить link-time оптимизацию |
SANITIZE |
(пусто) | Включить санитайзеры, например address или address,undefined (dev-сборки) |
WITH_TLS |
ON |
Включить поддержку HTTPS через vendored mbedtls |