haskell - SCons 和 Shake 的区别

标签 haskell build scons shake-build-system

我正在开发一个 Python/Haskell 项目,我正在寻找 Makefile 的替代品.明显的选择是 Python SCons和 Haskell Shake .由于我对它们中的任何一个都没有经验,所以我想问一下它们的优缺点是否有任何比较。

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

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

    有一个Why Shake?文档给出了选择 Shake 而不是其他构建系统的理由,但它并不专注于与 SCons 的比较。

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

  • Shake 特别擅长处理具有无法静态预测的依赖关系的生成文件,特别是当您从编译的程序生成文件时。
  • 构建项目的 Haskell 部分可能比构建 Python 更难(因为 Haskell 具有更丰富的结构和更复杂的编译器)。使用 Shake 更容易进入 existing examples of compiling Haskell并使用 libraries for parsing Haskell如果你需要它。
  • 关于haskell - SCons 和 Shake 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173283/

    相关文章:

    haskell - 如何在我的 LISP 中实现宏系统

    haskell - "return 1"如何在 GHCi 中显示 "1"?

    build - 无论有没有分析方面的内容,如何使用gradle构建项目?

    scons - 构建gem5时出错: TypeError : File/hdd/Me/gem5/src/systemc/ext/systemc found where directory expected

    SCons 找不到 mingw-w64 编译器

    linux - 在 GNU/Linux 中,如何将 mingw-w64 与 SCons 结合使用来生成 64 位 Windows 可执行文件?

    Haskell,简单延续

    haskell - 我们可以用 Alternative 做什么,但不能用 Monoid 做什么?

    ios - 在哪里可以获取适用于我的 iOS 项目的 Appium 兼容 iOS 应用程序文件?

    java - 使用 Ant 运行 JUnit 测试