我已将putStrLn "Hello"
行添加到我的Setup.lhs的main
函数中,并期望在运行cabal configure
或cabal build
时看到它。但我没有。
然后我使用Setup.lhs
汇编ghc --make
并运行./Setup configure
并显示该行。
如果它已经完成了,我根本不会看到这背后的理由,甚至需要在Setup.lhs
文件中。你能帮我清楚这些事吗?
答案 0 :(得分:28)
你很可能有
build-type: Simple
在.cabal
文件中。如果选择Simple
构建类型,则基本上承诺您的Setup
文件除了调用defaultMain
之外什么也不做,而cabal
二进制文件不会调用它。如果要确保每次都运行Setup
文件,请将行更改为
build-type: Custom
您还询问了要求Setup
文件的理由:实际上,如果您使用Simple
构建类型,则不是。 cabal
二进制文件将很乐意配置并安装它。但是,为任何包添加Setup
文件被认为是好的方式,因为它允许用户安装具有Cabal
库可用但不包含cabal-install
工具的包(由于这个原因,Hackage强制存在Setup
文件。