我有一个相当大的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”应该可以计算这个命令行并运行它,或者可能有一个我不知道的工具已经这样做了。
答案 0 :(得分:0)
您可以将odir和ohi选项设置为指向cabal构建目录,如下所示:http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/separate-compilation.html#output-files