繁体   English   中英

在ghci和ghc之间切换时如何防止重新编译

[英]How can I prevent recompiling when switching between ghci and ghc

当我同时使用带有-fobject-code的 ghci 和命令行 ghc 时,从一个切换到另一个时,代码会被完全编译。 例如,当我使用配置为使用cabal repl的 haskell inferior 模式在 Emacs 中交互工作时,代码加载和编译正常。 然后我做一个cabal build并重新编译相同的代码。

假设 ghci 中的-fobject-code实际上使用与 ghc 相同类型的二进制格式,我该如何防止这种双重编译?

这个问题的一个解决方法(晚了七年,对不起:我把它放在这里以防有人通过谷歌找到它)如下:

不要在 GHCi 标志中使用-fobject-code ,而是指定-osuf dyn_o -hisuf dyn_hi 这样做将使 GHCi 有机会加载使用 -dynamic -dynamic-too构建的 object 代码(如果可用),否则会解释代码。

实际上: cabal repl lib:sample --ghc-options "-osuf dyn_o -hisuf dyn_hi"

有关详细信息,请参阅 GHC 错误“ghci 不再加载 dynamic.o 文件”: https://gitlab.haskell.org/ghc/ghc/-/issues/13604

你可以让ghci和朋友为编译文件使用不同的后缀。 将以下内容添加到~/.ghci

:set -hisuf i_hi
:set -osuf i_o

...并且ghci会将内容输出到foo.i_hifoo.i_o ,这些内容不会覆盖ghc的.hi.o文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM