Выбор между Scons и Waf в крупных проектах
Мы думаем о преобразовании действительно большого проекта из использования GNU Make в более современный инструмент построения. Мое настоящее предложение - использовать SCons или Waf.
В настоящее время
- Время сборки составляет около 15 минут.
- Около 100 разработчиков.
- Около 10 процентов кода - это C/С++/Fortran rest - это Ada (с использованием gnatmake).
Потенциальные надежды/выгоды от улучшений
- Общий кэш-память компилятора для сокращения времени сборки и требует дискового пространства
- Простое обслуживание
Хорошо ли SCons для этой задачи? Я видел комментарии к нему, а не к масштабированию, а также к Waf. Тем не менее, пару лет. Заработали ли у нас последние исходы прошлых лет? Если нет, то в чем причина его плохой производительности по сравнению с Waf.
Ответы
Ответ 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, просто разместите свои проблемы в списке рассылки.