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

Anu*_*ain 7 haskell cross-platform makefile cabal

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

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

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

ham*_*mar 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
Run Code Online (Sandbox Code Playgroud)

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

$ cabal init
Run Code Online (Sandbox Code Playgroud)

然后,Cabal将向您询问一些简单的问题,并根据您的答案生成一个cabal文件.然后,您可以调整此文件以满足您的特定需求.


要安装软件包,只需在软件包目录中运行即可

$ cabal install
Run Code Online (Sandbox Code Playgroud)

您还可以将包上传到标准Haskell包存储库Hackage.这样,人们可以使用该命令一步下载并安装您的包(以及任何依赖项)

$ cabal install mypackage
Run Code Online (Sandbox Code Playgroud)

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

它还可以与Haddock一起为您的包生成参考文档.查看Hackage上的一些软件包,了解结果示例.

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

总的来说,这些原因以及更多使用Cabal组织,构建和分发Haskell项目的好处.