通过 ghc编译haskell源文件时--make foo.hs GHC总是留下除 foo.exe 之外的各种中间文件。这些是 foo.hi foo.o

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

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

有帮助吗?

解决方案

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

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

其他提示

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

GHC现在有选项 no- keep-hi-files no-keep-o-files 。有关详细信息,请请参阅此处

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

事实证明使用-hidir / -odir / -outputdir并不好; / dev / null是一个文件,而不是一个目录。请参阅 http://www.haskell.org/pipermail/xmonad/2010 -MAY / 010182.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top