haskell - 小型 Haskell 项目的跨平台 makefile?

标签 haskell cross-platform makefile cabal

我最近构建了一个小型的单文件 Haskell 实用程序,将其包含在我的纯 PHP(我知道,令人大吃一惊)项目的“工具”部分中。

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

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

最佳答案

分发 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 Platform 中),那么还有用于将 Cabal 软件包转换为其他软件包管理器的工具。

它也可以与 Haddock 配合使用。用于为您的包生成引用文档。查看 Hackage 上的一些软件包以获取结果示例。

目前还正在开展工作来改进对 Cabal 测试套件的支持。

总的来说,这些原因以及更多原因使得使用 Cabal 来组织、构建和分发 Haskell 项目带来了巨大的好处。

关于haskell - 小型 Haskell 项目的跨平台 makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966845/

相关文章:

c++ - scons 如何将 sysroot 传递给 g++

keyboard - 操作系统和实现独立访问键盘?

c++ - 对我的 Makefile 如何重新制作目标文件感到困惑

haskell - 无法创建 Num 的派生实例

database - Haskell Persistent 上的 CRUD 模式

java - 使用Java开发跨平台,字体在不同平台缩放比例不同

makefile - 在make而不是bjam中使用boost.python

c++ - OpenCV GTK+2.x 错误 - "Unspecified error (The function is not implemented...)"

haskell - 约束类型的同义词

haskell - 模拟非矩形数组