https://github.com/swiftlang/swift-build/tree/main/Sources
Репозиторий swiftlang/swift-build представляет собой высокоуровневую систему сборки, разработанную на основе llbuild. Эта система используется в Xcode, Swift Playground и Swift Package Manager (SwiftPM) для сборки проектов и пакетов на языке Swift.
• Основана на 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 содержит исходный код основных компонентов 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 из корня репозитория .