Egor Merkushev

Swift Build

https://github.com/swiftlang/swift-build/tree/main/Sources

Репозиторий swiftlang/swift-build представляет собой высокоуровневую систему сборки, разработанную на основе llbuild. Эта система используется в Xcode, Swift Playground и Swift Package Manager (SwiftPM) для сборки проектов и пакетов на языке Swift.

🔧 Основные особенности Swift Build

• Основана на llbuild: Использует низкоуровневый движок сборки, обеспечивая высокую производительность и масштабируемость для проектов с миллионами зависимостей . • Поддержка PIF (Project Interchange Format): Swift Build не обрабатывает напрямую файлы .xcodeproj или Package.swift. Вместо этого, инструменты, такие как Xcode или SwiftPM, преобразуют эти файлы в формат PIF, который затем используется Swift Build для выполнения сборки . • Интеграция с Xcode и SwiftPM: Swift Build является движком сборки, используемым в Xcode и SwiftPM. В SwiftPM его можно активировать с помощью флага —build-system=swiftbuild. • Плагинная архитектура: Поддерживает плагины, такие как SWBApplePlatform, для обработки специфичных для платформ задач, например, компиляции Asset Catalog или Core Data. Это обеспечивает модульность и расширяемость системы .

📁 Структура каталога Sources

Каталог Sources содержит исходный код основных компонентов Swift Build. Здесь находятся модули, реализующие: • SWBBuildService: Основной сервис сборки, управляющий процессом сборки проектов. • SWBTaskConstruction: Модуль, отвечающий за построение графа задач сборки. • SWBApplePlatform: Плагин, обеспечивающий поддержку специфичных для платформ Apple функций.

Эти модули работают совместно, обеспечивая гибкую и мощную систему сборки для проектов на Swift.

🧪 Тестирование и отладка

Для тестирования изменений в Swift Build можно использовать следующие команды: • С Xcode: Запустите swift package —disable-sandbox launch-xcode из корня репозитория, чтобы открыть Xcode, настроенный для использования вашей версии Swift Build. • С xcodebuild: Используйте swift package —disable-sandbox run-xcodebuild для запуска xcodebuild, настроенного на использование вашей версии Swift Build.

Для отладки можно прикрепиться к процессу SWBBuildServiceBundle через Xcode, что позволяет устанавливать точки останова и отслеживать выполнение кода .

📄 Документация

Дополнительную техническую документацию можно найти в каталоге SwiftBuild.docc. Для просмотра документации в браузере выполните команду:

docc preview SwiftBuild.docc

На macOS можно использовать:

xcrun docc preview SwiftBuild.docc

🤝 Вклад в проект

Проект открыт для вкладов. Перед отправкой изменений рекомендуется ознакомиться с руководством по внесению изменений в Swift и убедиться, что ваши изменения соответствуют установленным стандартам. Для тестирования изменений используйте команду swift test из корня репозитория .