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

arr*_*owd 17 build-process haskell cabal

我已经添加了putStrLn "Hello"一行到main我Setup.lhs的功能,并期待看到它运行时cabal configurecabal build.但是我没有.

然后我编译Setup.lhsghc --make就跑./Setup configure,并证明就行了.

如果它已经完成了意图,我看不到这背后的理由,甚至需要在Setup.lhs档案中.你能帮我清楚这些事吗?

kos*_*kus 28

你很可能有

build-type: Simple
Run Code Online (Sandbox Code Playgroud)

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

build-type: Custom
Run Code Online (Sandbox Code Playgroud)

你还问有关要求的合理性Setup文件反正:实际上,它是不是如果你使用的需要Simple构建类型.该cabal二进制会很乐意配置并没有安装.但是,Setup为任何包包含文件被认为是好的样式,因为它将允许用户安装具有Cabal可用库的包,但不安装该cabal-install工具(并且Hackage因此而强制存在Setup文件).