我最近构建了一个小的,单文件的Haskell实用程序,包含在我原本纯粹的PHP(眉毛,我知道)项目的“工具”部分中。
最初我检查了.hs源文件以及在我的Linux开发机器上生成的二进制文件到我们使用的版本控制系统(Git)。但是现在我想更多关于它,我想创建跨平台的makefile,以便其他开发人员可以轻松地在他们的系统上编译它。
是否有一些最佳实践/指南,甚至更好的Makefile模板可以下载?没什么好看的,只是允许开发人员指定GHC设置的一些细节并运行一个简单的脚本来开始。
答案 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设计的构建系统。