7

我最近构建了一个小型的单文件 Haskell 实用程序,将其包含在我原本纯 PHP(我知道,引起了人们的注意)项目的“工具”部分中。

最初,我将 .hs 源文件以及在我的 Linux 开发机器上生成的二进制文件检入到我们使用的版本控制系统 (Git) 中。但现在我想得更多,我想创建跨平台的 makefile 来配合它,以便其他开发人员可以轻松地在他们的系统上编译它。

是否有一些最佳实践/指南,甚至更好的 Makefile 模板可供我下载?没什么特别的,只是允许开发人员指定一些关于他们的 GHC 设置的细节并运行一个简单的脚本来开始。

4

2 回答 2

11

分发 Haskell 项目的推荐方法是使用Cabal。Cabal 既是 Haskell 代码的构建系统和包管理器,它可以轻松地在不同平台上构建 Haskell 代码,同时为您处理依赖关系。

这是一个示例 cabal 文件:

Name:           MyPackage
Version:        0.0
Cabal-Version:  >= 1.2
License:        BSD3
Author:         Angela Author
Synopsis:       Small package an utility program
Build-Type:     Simple

Executable myutility
  Build-Depends:  base
  Main-Is:        Main.hs
  Hs-Source-Dirs: src

您可以通过运行以交互方式生成 cabal 文件

$ cabal init

Cabal 然后会问你一些简单的问题,并根据你的回答生成一个 cabal 文件。然后,您可以调整此文件以满足您的特定需求。


要安装你的包,只需在包目录中运行它

$ cabal install

你也可以将你的包上传到Hackage,标准的 Haskell 包存储库。这样,人们可以使用命令一步一步下载和安装你的包(和任何依赖项)

$ cabal install mypackage

如果您不想要求您的用户安装 Cabal(尽管 Cabal 包含在Haskell 平台中),也有将 Cabal 包转换为其他包管理器的工具。

它还可以很好地与Haddock一起为您的包生成参考文档。查看 Hackage 上的一些包以获取结果示例。

目前还有一些工作正在改进对 Cabal 中测试套件的支持。

总体而言,这些原因以及更多原因使得使用 Cabal 组织、构建和分发您的 Haskell 项目是一个很大的好处。

于 2011-05-11T15:50:40.243 回答
2

如果您负担得起另一个依赖项,请尝试cabal。这是一个专门为 Haskell 设计的构建系统。

于 2011-05-11T15:44:52.457 回答