19

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

然后我编译Setup.lhsghc --make运行./Setup configure并显示该行。

如果是故意这样做的,我看不出这背后的理由,甚至根本不需要Setup.lhs存档。你能帮我清除这些东西吗?

4

1 回答 1

30

你很可能有

build-type: Simple

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

build-type: Custom

您还询问了Setup无论如何都需要该文件的理由:实际上,如果您使用构建类型,则不需要它。二进制文件将很乐意在没有的情况下配置和安装它Simplecabal然而,为任何包包含一个文件被认为是一种很好的风格Setup,因为它允许用户安装有Cabal可用库的包,但不能安装cabal-install工具(因此,Hackage 强制文件的存在Setup)。

于 2012-12-14T09:49:44.843 回答