Различия между 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 и неявной системе зависимостей, которая очень точна и проста в использовании.