Инструкции по сборке
Как собрать основную библиотеку (для интеграторов, а не для конечных пользователей).
Это руководство содержит подробные инструкции по сборке Plugify на Windows, Linux и macOS. Оно также охватывает расширенные опции настройки и советы по устранению неполадок.
Предварительные требования
Перед сборкой Plugify убедитесь, что у вас установлены следующие инструменты:
Windows
- Visual Studio 2022 (с поддержкой C++ и CMake)
- CMake (если не используется встроенный в Visual Studio CMake)
- Git
Linux
- Основные инструменты для сборки (например,
gcc
,g++
,make
) - CMake
- Ninja (опционально, для более быстрой сборки)
- Git
macOS
- Xcode Command Line Tools
- CMake
- Ninja (опционально, для более быстрой сборки)
- Git
Клонирование репозитория
Для начала клонируйте репозиторий Plugify вместе с его подмодулями:
Сборка на Windows
Использование Visual Studio 2022 с CMake
Установите инструменты CMake:
Убедитесь, что у вас установлены инструменты CMake вместе с Visual Studio.
Откройте проект:
- Откройте Visual Studio 2022.
- Выберите
Файл > Открыть > CMake
. - Перейдите в каталог репозитория и откройте файл
CMakeLists.txt
.
Настройте и соберите:
- Visual Studio автоматически настроит и сгенерирует необходимые файлы сборки.
- Выберите конфигурацию
Release
илиDebug
. - Соберите проект, выбрав
Сборка > Собрать всё
в меню.
Использование проекта Visual Studio 2022
Сгенерируйте файлы проекта:
- Откройте командную строку и перейдите в каталог репозитория.
- Создайте каталог сборки и перейдите в него:
- Сгенерируйте файлы проекта Visual Studio с помощью CMake:
Соберите решение:
- Откройте сгенерированный файл
plugify.sln
в Visual Studio. - Выберите конфигурацию
Release
илиDebug
. - Соберите решение, выбрав
Сборка > Собрать решение
в меню.
Использование MinGW
Сгенерируйте Makefiles:
- Откройте командную строку и перейдите в каталог репозитория.
- Создайте каталог сборки и перейдите в него:
- Сгенерируйте Makefiles с помощью CMake:
Соберите проект:
- Используйте
mingw64-make
для сборки проекта:
Использование командной строки
Сгенерируйте файлы сборки:
- Откройте командную строку разработчика Visual Studio и перейдите в каталог репозитория.
- Создайте каталог сборки и перейдите в него:
- Сгенерируйте Makefiles с помощью CMake:
Соберите проект:
- Используйте
cmake
для сборки проекта:
Сборка на Linux
Установите зависимости:
- Откройте терминал и установите необходимые зависимости:
Сгенерируйте Makefiles:
- Перейдите в каталог репозитория.
- Создайте каталог сборки и перейдите в него:
- Сгенерируйте Makefiles с помощью CMake:
Соберите проект:
- Используйте
cmake
для сборки проекта:
Сборка на macOS
Установите зависимости:
- Откройте терминал и установите необходимые зависимости:
Сгенерируйте Makefiles:
- Перейдите в каталог репозитория.
- Создайте каталог сборки и перейдите в него:
- Сгенерируйте Makefiles с помощью CMake:
Соберите проект:
- Используйте
cmake
для сборки проекта:
Сборка с помощью CLion
CLion можно использовать для сборки проекта на всех платформах (Windows, Linux, macOS):
Откройте проект:
- Откройте CLion.
- Выберите
File > Open
. - Перейдите в каталог репозитория и откройте файл
CMakeLists.txt
.
Настройте и соберите:
- CLion автоматически настроит и сгенерирует необходимые файлы сборки.
- Соберите проект, выбрав
Build > Build Project
в меню.
Обновление
Чтобы обновить ваш локальный репозиторий до последней версии:
Если сборка не удалась, попробуйте удалить каталог build
и создать его заново, как описано выше. Обратите внимание, что процесс сборки не вносит никаких изменений за пределами каталога build
.
Типы сборки
Plugify поддерживает несколько типов сборки, которые можно указать с помощью переменной CMAKE_BUILD_TYPE
. Тип сборки по умолчанию — RelWithDebInfo
. Кроме того, Plugify предоставляет пресеты для сборок Debug
и Release
, чтобы упростить процесс.
Доступные типы сборки
- Debug:
- Включает отладочные символы и отключает оптимизации.
- Идеально подходит для разработки и устранения неполадок.
- Используйте этот пресет для локальных сборок, когда вам нужна подробная отладочная информация.
- Release:
- Включает оптимизации и создает меньший, более быстрый бинарный файл.
- Использует
RelWithDebInfo
для включения отладочных символов в локальных сборках. - Идеально подходит для производственных сборок, где важна производительность.
- RelWithDebInfo:
- Включает оптимизации, но также содержит отладочные символы.
- Это тип сборки по умолчанию и используется пресетом
Release
.
- MinSizeRel:
- Включает оптимизации для получения наименьшего возможного размера бинарного файла.
- Идеально подходит для сред, где важно использование дискового пространства или памяти.
- Не включает отладочные символы.
Использование пресетов
Plugify предоставляет два пресета для упрощения процесса сборки:
- Пресет Debug:
- Собирает проект с конфигурацией
Debug
. - Используйте этот пресет для локальной разработки и отладки.
- Пример:
- Собирает проект с конфигурацией
- Пресет Release:
- Собирает проект с конфигурацией
Release
, которая используетRelWithDebInfo
для включения отладочных символов в локальных сборках. - Используйте этот пресет для готовых к производству сборок.
- Пример:
- Собирает проект с конфигурацией
Указание типов сборки вручную
Если вы предпочитаете указывать тип сборки вручную, вы можете использовать переменную CMAKE_BUILD_TYPE
:
Настройка Plugify
Plugify предоставляет несколько опций CMake для настройки:
Опция | Описание |
---|---|
-DPLUGIFY_BUILD_TESTS=ON | Включить сборку тестов |
-DPLUGIFY_BUILD_JIT=OFF | Собрать объектную библиотеку JIT |
-DPLUGIFY_BUILD_ASSEMBLY=OFF | Собрать объектную библиотеку ассемблера |
-DPLUGIFY_BUILD_DOCS=OFF | Включить сборку с документацией |
-DPLUGIFY_BUILD_OBJECT_LIB=OFF | Собрать Plugify как объектную библиотеку |
-DPLUGIFY_BUILD_SHARED_LIB=ON | Собрать Plugify как разделяемую библиотеку |
-DPLUGIFY_BUILD_SHARED_ASMJIT=OFF | Собрать AsmJit как разделяемую библиотеку |
-DPLUGIFY_BUILD_SHARED_CURL=OFF | Собрать cURL как разделяемую библиотеку |
-DPLUGIFY_USE_EXTERNAL_ASMJIT=OFF | Использовать внешнюю библиотеку AsmJit |
-DPLUGIFY_USE_EXTERNAL_GLAZE=OFF | Использовать внешнюю библиотеку Glaze |
-DPLUGIFY_USE_EXTERNAL_CURL=ON | Использовать внешнюю библиотеку cURL |
-DPLUGIFY_USE_EXTERNAL_FMT=OFF | Использовать внешнюю библиотеку fmt |
-DPLUGIFY_INTERFACE=OFF | Собрать как легковесный интерфейс для языковых модулей |
-DPLUGIFY_DOWNLOADER=ON | Включить загрузчик для менеджера пакетов |
-DPLUGIFY_LOGGING=ON | Включить систему логирования |
-DPLUGIFY_DEBUG=ON | Включить режим отладки (asserts) |
-DPLUGIFY_USE_LIBCPP=OFF | Использовать libc++ путем добавления флага -stdlib=libc++ , если доступно |
-DPLUGIFY_USE_STATIC_STDLIB=OFF | Включить статическую компоновку стандартной библиотеки для избежания проблем с ABI, добавляя флаги -static-* , если доступно |
-DPLUGIFY_USE_SANITIZER=OFF | Включить санитайзеры, добавляя флаги -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined , если доступно |
-DPLUGIFY_USE_CLANG_TIDY=OFF | Включить статический анализ с помощью clang-tidy |
-DPLUGIFY_USE_ABI0=ON | Включить использование старого ABI C++, который был по умолчанию в версиях GCC до GCC 5 |
Тестирование сборки
Plugify включает в себя настраиваемую систему тестирования, предназначенную для проверки функциональности контейнеров (например, строк, вариантов, векторов), используемых в языковых модулях и плагинах. Эта система основана на двух ключевых компонентах:
cross_call_worker
: плагин, который реализует методы, вызываемыеcross_call_master
.cross_call_master
: плагин, который вызывает методы изcross_call_worker
и дает ему указание вызывать методы обратно.
Эти плагины используются для тестирования маршалинга (обмена данными между плагинами, написанными на разных языках) и обеспечения совместимости между языковыми модулями.
Как это работает
cross_call_master
вызывает методы изcross_call_worker
другого языкового модуля.cross_call_worker
вызывает методы обратно вcross_call_master
.- Это двунаправленное взаимодействие тестирует систему маршалинга и гарантирует, что данные правильно передаются между плагинами.
Запуск тестов
Чтобы запустить тесты, вам нужно:
- Собрать тестовое приложение (
plug
). - Собрать языковые модули и плагины (
cross_call_worker
иcross_call_master
). - Настроить каталог
res
для включения необходимых плагинов и языковых модулей.
Соберите тестовое приложение
Следуйте инструкциям по установке, чтобы получить тестовое приложение plug
.
Соберите языковые модули и плагины
- Перейдите в каталог репозитория и создайте папку для сборки:
- Сгенерируйте файлы сборки и включите тестирование:
- Соберите языковые модули и плагины по отдельности. Например:
Примечание: Убедитесь, что каждый плагин или языковой модуль собирается отдельно, чтобы избежать конфликтов и обеспечить правильную компиляцию.
Настройте каталог res
- Создайте папку
res
в корневом каталоге репозитория:
- Внутри папки
res
создайте две подпапки:
- Скопируйте собранные плагины и языковые модули в папку
res
:
- Поместите
cross_call_worker
иcross_call_master
вres/plugins/
. - Поместите языковые модули (например,
cpp-module
,python-module
) вres/modules/
.
Запустите тесты
- Перейдите в каталог
build
и запустите приложениеplug
: - Приложение загрузит плагины и языковые модули, и тесты запустятся автоматически.
Пример рабочего процесса теста
cross_call_master
вызывает метод изcross_call_worker
, чтобы передать строку.cross_call_worker
обрабатывает строку и вызывает метод обратно вcross_call_master
, чтобы вернуть измененную строку.- Тест проверяет, что строка была правильно передана и возвращена.
Сборка документации
Документацию Plugify можно собрать локально с помощью Doxygen. Чтобы собрать документацию:
Установите Doxygen:
- В Linux:
- В macOS:
- В Windows:
Загрузите и установите Doxygen с официального сайта.
Сгенерируйте документацию:
- Перейдите в каталог репозитория и создайте папку для сборки:
- Включите сборку документации:
- Соберите документацию:
Просмотрите документацию:
- Откройте сгенерированную документацию в вашем браузере: