Система автоматизации сборки проектов ya make разработана компанией Яндекс.
ya make позволяет:
- компилировать код на разных языках, обеспечивая прозрачное взаимодействие между вызовами методов,
- управлять зависимостями,
- запускать тесты,
- генерировать исполняемые файлы и пакеты в едином и согласованном окружении, независимо от сложности проекта.
Структура системы аналогична CMakeLists.txt, в ней используется декларативный подход к описанию сборки. Это делает ее легкой в освоении для тех, кто знаком с концепциями CMake.
Вся конфигурация сборки описывается в файлах типа ya.make с помощью вызова макросов с параметрами.
Система поддерживает более 300 макросов и 70 модулей, которые настраиваются с помощью специального языка описания макросов или плагинов на Python. Это позволяет гибко адаптировать систему под разнообразные потребности проектов.
ya make поддерживает сборку проектов на C++, Python, Java и Go с использованием различных тестовых фреймворков.
Обладает интеграцией с различными кодогенерирующими технологиями, такими как protobuf и ragel.
Система сборки работает на Linux, Windows и macOS. Техника кросс-компиляции позволяет на одной локальной машине собирать программы под множество различных платформ, включая мобильные устройства.
Строгое управление зависимостями и данными исключает влияние внешних и изменяющихся ресурсов и гарантирует стабильность и идентичность результатов сборки при каждом ее запуске.
Команды сборки интегрированы в универсальную утилиту ya, которая предлагает широкий набор функций и параметров командной строки для адаптации процесса сборки под различные требования проекта:
- Основной сборочный инструмент:
ya make - Сборка с дальнейшим пакетированием:
ya package - Получение различной информации из системы сборки:
ya dump - Генерация и модификация описания сборки:
ya project - Анализ времени выполнения сборки:
ya analyze-make - Запуск различных инструментов:
ya tool - Исправление стиля кода:
ya style - Тестирование программных проектов:
ya test - Генерация конфигурационного файла:
ya gen-config - Очистка временных файлов (кеш):
ya gc
Дополнительные сведения:
- Описание макросов для ya.make на языке:
core.conf