Инструкции по сборке
Как собрать основную библиотеку (для интеграторов, а не для конечных пользователей).
Это руководство содержит подробные инструкции по сборке 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_DOCS=OFF | Включить сборку с документацией |
-DPLUGIFY_BUILD_OBJECT_LIB=OFF | Собрать Plugify как объектную библиотеку |
-DPLUGIFY_BUILD_SHARED_LIB=ON | Собрать Plugify как разделяемую библиотеку |
-DPLUGIFY_BUILD_SHARED_ASMJIT=OFF | Собрать AsmJit как разделяемую библиотеку |
-DPLUGIFY_USE_EXTERNAL_ASMJIT=OFF | Использовать внешнюю библиотеку AsmJit |
-DPLUGIFY_USE_EXTERNAL_GLAZE=OFF | Использовать внешнюю библиотеку Glaze |
-PLUGIFY_USE_EXTERNAL_LIBSOLV=ON | Использовать внешнюю библиотеку LivSolv |
-DPLUGIFY_USE_EXTERNAL_FMT=OFF | Использовать внешнюю библиотеку fmt |
-DPLUGIFY_USE_LIBCPP=OFF | Использовать libc++ путем добавления флага -stdlib=libc++, если доступно |
-DPLUGIFY_USE_STATIC_STDLIB=OFF | Включить статическую компоновку стандартной библиотеки для избежания проблем с ABI, добавляя флаги -static-*, если доступно |
-DPLUGIFY_USE_SANITIZER=OFF | Включить санитайзеры, добавляя флаги -fsanitize=address, если доступно |
-DPLUGIFY_USE_ANALYZER=OFF | Включить статические анализаторы компилятора. CPU Ресурсоёмкий. |
-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/extensions/. - Поместите языковые модули (например,
cpp-module,python-module) вres/extensions/.
Запустите тесты
- Перейдите в каталог
buildи запустите приложениеplug: - Приложение загрузит плагины и языковые модули, и тесты запустятся автоматически.
Пример рабочего процесса теста
cross_call_masterвызывает метод изcross_call_worker, чтобы передать строку.cross_call_workerобрабатывает строку и вызывает метод обратно вcross_call_master, чтобы вернуть измененную строку.- Тест проверяет, что строка была правильно передана и возвращена.
Сборка документации
Документацию Plugify можно собрать локально с помощью Doxygen. Чтобы собрать документацию:
Установите Doxygen:
- В Linux:
- В macOS:
- В Windows:
Загрузите и установите Doxygen с официального сайта.
Сгенерируйте документацию:
- Перейдите в каталог репозитория и создайте папку для сборки:
- Включите сборку документации:
- Соберите документацию:
Просмотрите документацию:
- Откройте сгенерированную документацию в вашем браузере: