Выбор между Scons и Waf в крупных проектах - программирование
Подтвердить что ты не робот

Выбор между Scons и Waf в крупных проектах

Мы думаем о преобразовании действительно большого проекта из использования GNU Make в более современный инструмент построения. Мое настоящее предложение - использовать SCons или Waf.

В настоящее время

  • Время сборки составляет около 15 минут.
  • Около 100 разработчиков.
  • Около 10 процентов кода - это C/С++/Fortran rest - это Ada (с использованием gnatmake).

Потенциальные надежды/выгоды от улучшений

  • Общий кэш-память компилятора для сокращения времени сборки и требует дискового пространства
  • Простое обслуживание

Хорошо ли SCons для этой задачи? Я видел комментарии к нему, а не к масштабированию, а также к Waf. Тем не менее, пару лет. Заработали ли у нас последние исходы прошлых лет? Если нет, то в чем причина его плохой производительности по сравнению с Waf.

4b9b3361

Ответ 1

Я разрабатываю цепочку инструментов для нашей компании, которая построена вокруг waf. Он нацелен на Fedora, Ubuntu, Arch, Windows, Mac OSX и будет выведен на наши встроенные устройства, выполняющие кросс-компиляцию на разных хостах.

Мы нашли способ, которым waf позволяет использовать расширяемость с помощью инструментов, функций и других методов, что невероятно легко настроить и расширить для наших проектов.

Лично я считаю, что он блестящий и он прекрасно абстрагирует интерфейсы с различными интегрированными инструментами.

К сожалению, у меня нет глубокого опыта работы с Scons, но много с GNU Make/Autotools. Наше решение пойти с waf после оценки инструментов сборки было то, что нам нужно что-то, что хорошо работало везде, что сделало наш инструмент сборки подкрепленным python и что он был быстрым. Я принял решение о этих результатах и пошел оттуда.

Ответ 2

В прошлом SCons не был таким результативным, но с тех пор было добавлено множество улучшений.

Мне нравятся оба варианта, и мне пришлось принять то же решение около 6 месяцев назад. Я пошел с SCons, так как он, похоже, имеет большую базу пользователей и поддержки.

Здесь - полезная ссылка, которая сравнивает SCons с другими инструментами построения.

Ответ 3

Я лично предпочитаю Waf, потому что он более гибкий и не имеет проблемы с вариантом каталога.

Waf

Плюсы:

  • Отдельный вариант каталога; вы не загромождаете свою исходную папку объектными файлами (у SCons также есть это, но она не включена по умолчанию и требует нескольких попыток получить работу)
  • Очень гибкий
  • Автоматическая сортировка зависимостей
  • Работает над множеством версий Python (CPython 2, CPython 3, Jython и PyPy)
  • Вы распространяете его с вашим приложением, поэтому пользователям просто нужен Python

Минусы:

  • A боль для расширения
  • Ужасно недокументировано (хотя примеры помогают)
  • Не отличает GCC и Clang хорошо (не уверен, что у SCons тоже есть эта проблема)

SCons

Плюсы:

  • Гораздо проще, чем Waf
  • Легче продлить, чем Waf (см. здесь)
  • Несколько лучше документировано

Минусы:

Нижняя строка

Это зависит от того, что вы ищете. В целом, Waf кажется очень хорошим в управлении крупными проектами (и не только из-за скорости), но, если вам нужно его расширить, посмотрите в другом месте. С другой стороны, SCons намного проще в использовании.

Если вы решите пойти с Waf, просто разместите свои проблемы в списке рассылки.