SCons和Shake之间的差异

时间:2014-03-04 13:28:35

标签: haskell build scons shake-build-system

我正在研究Python / Haskell项目,我正在寻找Makefile的替代方案。显而易见的选择是Python SCons和Haskell Shake。由于我没有任何经验,我想问一下他们的缺点和优点是否有任何比较。

更新:该项目对构建有一些复杂的要求:

  • 让用户配置类似构建的选项以启用/禁用工具路径等。
  • 编译时生成Haskell和Python文件。他们的依赖应该正常工作。
  • 有多个Haskell程序共享大部分源文件。我想这样:
    • 可以单独构建每个,而不是构建不需要的源;
    • 编译多个程序时,源文件不会多次构建;
    • 如果可能的话,在编译期间实现并行性。
  • 检查目标系统及其路径上的多个已安装程序(如pythonflock等)。
  • 检查目标系统的依赖关系,包括Python,Haskell。
  • 根据依赖项参数化构建 - 如果缺少测试的依赖项,仍然可以构建项目,跳过测试(并通知用户)。

2 个答案:

答案 0 :(得分:4)

有一个Why Shake?文档提供了选择Shake而非其他构建系统的理由,但它没有关注与SCons的比较。

更新:您的所有要求似乎都很容易在Shake中表达(如果您遇到任何问题,请询问StackOverflow)。至于Shake vs SCons:

  • Shake特别擅长处理具有无法静态预测的依赖项的生成文件,特别是如果您从编译的程序生成文件。
  • 构建项目的Haskell部分可能比构建Python更困难(因为Haskell具有更丰富的结构和更复杂的编译器)。使用Shake可以更轻松地使用existing examples of compiling Haskell并在需要时使用libraries for parsing Haskell

答案 1 :(得分:3)

有一个SCons wiki page将它与其他构建工具进行比较,遗憾的是,它与Haskell / Shake没有比较。

此外,question可能有所帮助。

与其他工具(尤其是make和cmake)相比,SCons的Python语法以及 隐式 依赖系统非常准确且易于使用。