haskell - 如何使用 Cabal 构建一个简单的项目?

标签 haskell makefile cabal

Haskell wiki 声明你应该使用 Cabal 作为你的构建系统。但是,在我看来,它更多地是针对生成软件包而不是仅仅构建二进制文件。基本上,我要做的就是将 src/目录中的每个 *.hs 文件构建到 bin/中的单独二进制文件中。这个makefile很好地完成了这一点,但我想了解Cabal,这似乎是一个让我开始的好例子:

GHC = ghc
GHCFLAGS = -outputdir bin
SRC = $(wildcard src/*.hs)
BIN = $(patsubst src/%.hs,%,$(SRC))

all: $(addprefix bin/, $(BIN))

bin/%: src/%.hs
    $(GHC) $(GHCFLAGS) $< -o $@

clean:
    rm bin/*

最佳答案

最简单的开始方法是让 Cabal 生成 .cabal为您准备的文件,您可以将其用作起点。为此,请进入您的项目目录并键入

$ cabal init

然后它会问你一堆关于你的包裹的问题。一些问题,如作者姓名和电子邮件,只有在您计划将您的包上传到 Hackage 时才真正重要,所以如果您愿意,可以将这些留空。之后,您可以编辑 .cabal文件来自定义它。生成的文件将包含一堆可以帮助您入门的注释。之后,只需键入
$ cabal configure
$ cabal build

默认情况下,二进制文件将放置在 ./dist/build/<name>/ 中。 .

关于haskell - 如何使用 Cabal 构建一个简单的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9300286/

相关文章:

python - 结合 maybe 和 seq monads : confused at the output

makefile - 在构建具有共同依赖项的目标时,GNU make 是否会受到竞争条件的影响?

haskell - 安装 Haskell Gloss

haskell - 如何在 `cabal repl` 中使用 `ghci` 而不是 `ghc-mod` ?

haskell - 构建 GHC : configure fails on happy despite successful cabal install

haskell - 空列表测试中的歧义类型变量

haskell - 如何捕获 Http.Conduit 的 simpleHttp 抛出的 404 状态异常

haskell - ghc 可以将某些指定的警告视为错误而将其他警告视为警告吗?

build-process - 目前最好的构建系统是什么

git - 使用例如构建源代码后的清理策略。混帐