如何阻止GHC生成中间文件?
当通过ghc --make foo.hs
编译一个haskell源文件ghc --make foo.hs
GHC总是会留下除foo.exe
之外的各种中间文件。 这些是foo.hi
和foo.hi
我经常最终不得不删除.hi和.o文件以避免混淆文件夹。
GHC是否有命令行选项不留下中间文件? (当问到#haskell时,我得到的最佳答案是ghc --make foo.hs && rm foo.hi foo.o
我经历了GHC文档,似乎没有自动删除临时文件的内置方法 – 毕竟,GHC需要这些中间文件来构build最终的可执行文件,并且它们的存在速度当GHC知道它不需要重新编译一个模块时,可以进行整体编译。
但是,您可能会发现设置-outputdir
选项将帮助您; 将所有的目标文件( .o
),接口文件( .hi
)和FFI存根文件放在指定的目录中。 它仍然是“混乱”,但至less它不在你的工作目录了。
我平常的工作stream程是直接使用cabal而不是ghc。 这将outputdir选项设置到一个合适的构build文件夹中,并可以为您编译haddock文档。 所有你需要的是为你的项目定义.cabal文件,然后说cabal安装或cabal构build,而不是直接运行ghc。 既然你最终需要关注这个过程,如果你想分享你的工作,这是一个很好的做法,它也有助于pipe理包的依赖。
您可以将-hidir设置为/ dev / null,我想,将它们发送到那里。 另外,一般的-fno-code选项closures了大量的输出。 你可能只想使用Cabal。
原来,使用-hidir / -odir / -outputdir是不好的; / dev / null是一个文件,而不是一个目录。 请参阅http://www.haskell.org/pipermail/xmonad/2010-May/010182.html