Система автоматизации сборки проектов 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