Различия между SCons и Shake

Я работаю над проектом Python/Haskell и ищу альтернативы Makefile, Очевидный выбор - Python SCons и Haskell Shake. Поскольку у меня нет опыта работы с любым из них, я хотел бы спросить, есть ли сравнение их недостатков и преимуществ.

Обновление: проект имеет несколько сложных требований для строительства:

  • Позвольте пользователю настраивать опции включения / выключения, похожие на сборку, пути к инструментам и т. Д.
  • Во время компиляции создаются файлы как на Haskell, так и на Python. Их зависимости должны работать правильно.
  • Есть несколько программ на Haskell, которые разделяют большинство исходных файлов. Я бы хотел, чтобы:
    • возможно построить каждый отдельно, не создавая источники, которые не нужны;
    • исходные файлы не создаются несколько раз при компиляции нескольких программ;
    • все же достигните параллелизма во время компиляции, если это возможно.
  • Проверьте наличие нескольких установленных программ на целевых системах и их пути (например, python, flock так далее.)
  • Проверьте наличие зависимостей на целевых системах, как Python, так и Haskell.
  • Параметризовать сборку в соответствии с зависимостями - если зависимости для тестирования отсутствуют, все равно должна быть возможность построить проект, пропуская тесты (и информируя об этом пользователя).

2 ответа

Есть Почему Shake? документ, который обосновывает выбор Shake по сравнению с другими системами сборки, но не фокусируется на сравнении с SCons.

Обновление: все ваши требования кажутся достаточно простыми для выражения в Shake (спросите в Stackru, если вы застряли с любым из них). Что касается Shake vs SCons:

  • Shake особенно хорош в работе с сгенерированными файлами с зависимостями, которые невозможно предсказать статически, особенно если вы генерируете файлы из программ, которые вы компилируете.
  • Сборка частей вашего проекта на Haskell, вероятно, будет сложнее, чем сборка Python (поскольку Haskell имеет более богатую структуру и более сложный компилятор). Использование Shake упрощает использование существующих примеров компиляции Haskell и использование библиотек для анализа Haskell, если вам это нужно.

Существует вики-страница SCons, которая сравнивает ее с другими инструментами сборки, к сожалению, там нет сравнения с Haskell/Shake.

Также этот вопрос может помочь.

SCons действительно блестит по сравнению с другими инструментами (особенно make и cmake) благодаря своему синтаксису Python и неявной системе зависимостей, которая очень точна и проста в использовании.

Другие вопросы по тегам