我在 Setup.lhs 的函数中添加了putStrLn "Hello"
一行main
,并希望在运行时看到它cabal configure
或cabal build
. 但我没有。
然后我编译Setup.lhs
并ghc --make
运行./Setup configure
并显示该行。
如果是故意这样做的,我看不出这背后的理由,甚至根本不需要Setup.lhs
存档。你能帮我清除这些东西吗?
我在 Setup.lhs 的函数中添加了putStrLn "Hello"
一行main
,并希望在运行时看到它cabal configure
或cabal build
. 但我没有。
然后我编译Setup.lhs
并ghc --make
运行./Setup configure
并显示该行。
如果是故意这样做的,我看不出这背后的理由,甚至根本不需要Setup.lhs
存档。你能帮我清除这些东西吗?
你很可能有
build-type: Simple
在你的.cabal
文件中。如果您选择Simple
构建类型,您基本上保证您的Setup
文件除了调用之外什么都不做defaultMain
,并且cabal
二进制文件不会调用它。如果要确保Setup
每次都运行文件,请将行更改为
build-type: Custom
您还询问了Setup
无论如何都需要该文件的理由:实际上,如果您使用构建类型,则不需要它。二进制文件将很乐意在没有的情况下配置和安装它Simple
。cabal
然而,为任何包包含一个文件被认为是一种很好的风格Setup
,因为它允许用户安装有Cabal
可用库的包,但不能安装cabal-install
工具(因此,Hackage 强制文件的存在Setup
)。