如何阻止GHC生成中间文件?

38 haskell ghc

通过ghc --make foo.hsGHC 编译haskell源文件时,总是留下除了以外的各种中间文件foo.exe.这些是foo.hifoo.o.

我经常最终不得不删除.hi和.o文件以避免文件夹混乱.

GHC是否有命令行选项不留下其中间文件?(当被问到#haskell时,我得到的最佳答案是ghc --make foo.hs && rm foo.hi foo.o.

Mar*_*off 33

我已经浏览了GHC文档,并且似乎没有内置的方法来自动删除临时文件 - 毕竟,GHC需要那些中间文件来构建最终的可执行文件,以及它们的存在速度当GHC知道它不必重新编译模块时,整体编译.

但是,您可能会发现设置该-outputdir选项可以帮助您; 这会将所有目标文件(.o),接口文件(.hi)和FFI存根文件放在指定的目录中.它仍然"混乱",但至少它不再在你的工作目录中了.


Edw*_*ETT 15

我通常的工作流程是直接使用cabal而不是ghc.这会将outputdir选项设置为适当的构建文件夹,并且可以为您构建类似的haddock文档.您所需要的只是为您的项目定义.cabal文件,然后说cabal install或cabal build而不是直接运行ghc.因为如果你想分享你的hackage工作,最后你需要遵循这个过程,这是一个很好的做法,它也有助于管理包依赖.


use*_*284 9

GHC现在有选择 no-keep-hi-filesno-keep-o-files.有关更多信息,请参见此处


Don*_*art 6

您可以将-hidir设置为/ dev/null,我认为将它们发送到那里.此外,-fno-code选项通常会关闭大量输出.你可能只想使用Cabal.