Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new build system based on SCons #406

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

ShiftyX1
Copy link

@ShiftyX1 ShiftyX1 commented Dec 7, 2024

Улучшение системы сборки для Windows

При попытке изучения движка я столкнулся с проблемами при сборке проекта на Windows. Из-за этого несколько раз откладывал работу над проектом. Решил исправить эту ситуацию и улучшить процесс сборки, чтобы другие контрибьютеры не сталкивались с подобными трудностями.

Основные улучшения

build.ps1:

  • Автоматическая проверка и установка всех зависимостей
  • Понятные сообщения об ошибках
  • Опция очистки (build.ps1 -clean)

SConstruct:

  • Автоматизирована работа с vcpkg и его настройка
  • Автоматизировано копирование ресурсов и необходимых библиотек

Результат

  • Проект собирается с первого раза одной командой при наличии Visual Studio, Python, Git
  • Инструкции при отсутствии зависимостей (Visual Studio, Python, Git)
  • Ускорение процесса сборки
  • Меньше проблем для новых контрибьютеров

Перспективы

В будущем планируется расширить скрипты для поддержки других платформ (Linux, MacOS), что позволит иметь единый интерфейс сборки для всех платформ. Мне кажется это упростит как разработку/развитие проекта, так и CI/CD процессы.

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

Я постарался подробно документировать код SConstruct комментариями для облегчения их дальнейшей поддержки и доработки. Буду рад любым предложениям по улучшению как самого кода, так и его документировании.

Протестировано на Windows 10/11 с Visual Studio 2022.

@Ygrik2003
Copy link

Вообще, по хорошему, это все можно сделать и с cmake, что бы не плодить множество дополнительных инструментов. Что касательно vcpkg, его также можно без проблем внедрить в CMake.

Чем мне вообще не нравится SCons -- это питон, а по моему опыту использование питона избыточно для CMake'а всегда, что бы не хотелось реализовать в системе сборки проекта

@Ygrik2003
Copy link

Пример интеграции vcpkg в cmake можно глянуть тут

@ShiftyX1
Copy link
Author

Я просто не знал, честно говоря, про такую возможность интеграции - в других проектах часто встречал SCons и решил пойти по "проторенному" пути :D
Гляну документацию, спасибо за информацию!

@Ygrik2003
Copy link

Что касательно кривой интеграции vcpkg, то можно глянуть вот такой фикс #413
На самом деле тут можно долго и мучительно рефакторить весь cmake, но пока что, думаю, можно оставить такой фикс

@MihailRis
Copy link
Owner

MihailRis commented Dec 14, 2024

Проект не является библиотекой или фреймворком, так что нет приоритета на упрощение сборки ценой таких радикальных изменений (как и крупных нововведений, которые нужно будет кому-то поддерживать, с учётом текущего темпа разработки проекта)
Следовательно, рассматриваются улучшения конфигурации уже имеющейся системы сборки проекта.
Более крупные изменения можно предлагать в формате Issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants