用于小型Haskell项目的跨平台makefile?

时间:2011-05-11 15:34:45

标签: haskell cross-platform makefile cabal

我最近构建了一个小的,单文件的Haskell实用程序,包含在我原本纯粹的PHP(眉毛,我知道)项目的“工具”部分中。

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

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

2 个答案:

答案 0 :(得分: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

您还可以将包上传到标准Haskell包存储库Hackage。这样,人们可以使用命令

在一个步骤中下载并安装您的包(以及任何依赖项)
$ cabal install mypackage

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

它还可以与Haddock很好地生成包的参考文档。查看Hackage上的一些软件包,了解结果示例。

目前还在努力改善Cabal测试套件的支持。

总的来说,这些原因以及更多原因使得Cabal能够组织,构建和分发您的Haskell项目。

答案 1 :(得分:2)

如果您能负担另一种依赖,请尝试cabal。它是专为Haskell设计的构建系统。