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项目的好处.