为什么cabal工具不使用Setup.lhs / Setup.hs?

时间:2012-12-14 09:40:37

标签: haskell build-process cabal

我已将putStrLn "Hello"行添加到我的Setup.lhs的main函数中,并期望在运行cabal configurecabal build时看到它。但我没有。

然后我使用Setup.lhs汇编ghc --make并运行./Setup configure并显示该行。

如果它已经完成了,我根本不会看到这背后的理由,甚至需要在Setup.lhs文件中。你能帮我清楚这些事吗?

1 个答案:

答案 0 :(得分:28)

你很可能有

build-type: Simple

.cabal文件中。如果选择Simple构建类型,则基本上承诺您的Setup文件除了调用defaultMain之外什么也不做,而cabal二进制文件不会调用它。如果要确保每次都运行Setup文件,请将行更改为

build-type: Custom

您还询问了要求Setup文件的理由:实际上,如果您使用Simple构建类型,则不是cabal二进制文件将很乐意配置并安装它。但是,为任何包添加Setup文件被认为是好的方式,因为它允许用户安装具有Cabal库可用但不包含cabal-install工具的包(由于这个原因,Hackage强制存在Setup文件。