Инструкции по сборке
Как собрать библиотеку ядра и её тестовое приложение из исходников (для интеграторов, не для пользователей).
На этой странице показано, как собрать ядро Plugify из исходников на Windows, Linux и macOS, какие у него есть опции CMake и как запустить его тесты.
Что нужно
- Компилятор с поддержкой C++23: GCC, Clang, MSVC (Visual Studio 2022) или Apple Clang. В CI ядро проверяется с GCC, Clang, MSVC и MinGW (MSYS2).
- CMake 3.14 или новее. Для пресетов нужны CMake 3.21 или новее и Ninja.
- Git.
Ставить библиотеки вручную не нужно. CMake скачивает зависимости при конфигурации: glaze, valijson, libsolv и asmjit, а также fmt, если в стандартной библиотеке нет <format>. Тесты дополнительно скачивают CLI11, Tracy и Catch2.
Исходники
Сборка
Из командной строки
Команды одинаковы на всех платформах:
Так собираются библиотека ядра и, поскольку PLUGIFY_BUILD_TESTS по умолчанию включена, тестовое приложение plug и тесты containers. Чтобы собрать только библиотеку, добавьте --target plugify.
На Windows запускайте команды из Developer Command Prompt для Visual Studio. Для MinGW добавьте к первой команде -G "MinGW Makefiles".
С пресетами
В репозитории два пресета, Debug и Release. Они используют Ninja и кладут сборку в build/<система>/<пресет>:
В IDE
Visual Studio 2022 и CLion открывают папку с CMakeLists.txt напрямую (в Visual Studio: File > Open > Folder) и подхватывают пресеты. Выберите Debug или Release и соберите проект.
Обновление
Если после обновления сборка падает, удалите папку сборки и сконфигурируйте заново. Сборка ничего не пишет за пределы своей папки.
Типы сборки
CMAKE_BUILD_TYPE принимает Debug, Release, RelWithDebInfo или MinSizeRel. Если он не задан, используется Release.
На Windows тип сборки важен: ядро не загружает языковой модуль, собранный в другой конфигурации, поэтому собирайте ядро и модули одинаково.
Опции CMake
| Опция | По умолчанию | Описание |
|---|---|---|
PLUGIFY_BUILD_TESTS | ON | Собрать тестовое приложение plug и тесты containers |
PLUGIFY_BUILD_DOCS | OFF | Собрать документацию Doxygen |
PLUGIFY_BUILD_SHARED_LIB | ON | Собрать ядро как разделяемую библиотеку; OFF собирает статическую |
PLUGIFY_BUILD_OBJECT_LIB | OFF | Собрать ядро как объектную библиотеку, чтобы влинковать его в свой бинарник |
PLUGIFY_BUILD_SHARED_ASMJIT | OFF | Собрать asmjit как разделяемую библиотеку |
PLUGIFY_USE_EXTERNAL_GLAZE | OFF | Использовать установленный glaze вместо скачивания |
PLUGIFY_USE_EXTERNAL_VALIJSON | OFF | Использовать установленный valijson |
PLUGIFY_USE_EXTERNAL_LIBSOLV | OFF | Использовать установленный libsolv |
PLUGIFY_USE_EXTERNAL_ASMJIT | OFF | Использовать установленный asmjit |
PLUGIFY_USE_EXTERNAL_FMT | OFF | Использовать установленный fmt |
PLUGIFY_DEFAULT_CXX_STANDARD | 23 | Стандарт C++; минимально поддерживаемый 20 |
PLUGIFY_USE_LIBCPP | OFF | Использовать libc++ (-stdlib=libc++), если она есть |
PLUGIFY_USE_STATIC_STDLIB | OFF | Статически линковать стандартную библиотеку (-static-*), если возможно |
PLUGIFY_USE_SANITIZER | OFF | Собрать с AddressSanitizer (-fsanitize=address), если он есть |
PLUGIFY_USE_ANALYZER | OFF | Включить статический анализатор компилятора. Медленно |
PLUGIFY_USE_CLANG_TIDY | OFF | Запускать clang-tidy при сборке |
PLUGIFY_USE_ABI0 | OFF | Использовать старый C++ ABI GCC (по умолчанию до GCC 5) |
Опции передаются в первую команду, например -DPLUGIFY_BUILD_TESTS=OFF.
Проверка сборки
Тестовое приложение
plug — консольный хост для ядра. Запускайте его рядом с папкой extensions, где лежат модули и плагины, как описано в Установке.
Вызовы между языками
Вызовы между языками проверяются двумя плагинами из репозитория C++-модуля, папка test:
cross_call_masterвызывает методы плагина-исполнителя с параметрами всех видов и проверяет результаты;cross_call_workerэкспортирует эти методы. У каждого языкового модуля свой worker, поэтому тест проверяет, как этот модуль передаёт значения в C++ и обратно.
Каждый из них — отдельный CMake-проект. Соберите их как любой C++-плагин, положите master, worker и нужные им языковые модули в extensions и запустите plug. Master запускает тесты при старте и выводит, сколько из них прошло.
Сборка документации
Справочник по API ядра собирается Doxygen:
Когда сборка закончится, откройте в браузере build/docs/html/index.html.