我有一个相当大的haskell项目,在某些文件上运行ghci可能需要编译数十个或数百个模块,然后才能显示提示,这可能需要几分钟的时间。我正在使用cabal,因此通常已经在dist /下编译了目标文件。但是ghci只在源.hs文件旁边查找.o文件。它不知道cabal的dist /。有没有什么简单有效的方法可以使ghci加载这些目标文件,而不是自己重新编译所有内容?

我要求一种简单而好用的方法,因为我有复杂而丑陋的方法。 :)
例如,这将使ghci重用cabal编译模块。我想出了这个命令
通过复制和修改cabal运行ghc的方式来确定一行,以确保其设置与上次cabal构建相同,这是确保ghci加载模块所必需的。

ghci -package-conf dist / package.conf.inplace -i -idist / build / git-annex / git-annex-tmp -i。 -idist / build / autogen -Idist / build / autogen -Idist / build / git-annex / git-annex-tmp -optP-include -optPdist / build / autogen / cabal_macros.h -odir dist / build / git-annex / git-annex-tmp -hidir dist / build / git-annex / git-annex-tmp -stubdir dist / build / git-annex / git-annex-tmp -XHaskell98 dist / build / git-annex / git-annex-tmp /Utility/libdiskfree.o dist / build / git-annex / git-annex-tmp / Utility / libmounts.o

在我看来,“cabal ghci”应该有可能计算出该命令行并运行它,或者也许有一个我不知道的工具已经这样做了。

最佳答案

您可以将odir和ohi选项设置为指向cabal构建目录,如下所示:http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/separate-compilation.html#output-files

10-06 04:12