有没有办法只将Haskell源编译为接口文件,而不是进一步?

Ign*_*rov 6 haskell ghc

通常,在ghc编译源代码时,它至少会生成一个.o(对象)和一个.hi(接口)文件.

为了减少编译时间,如果我只需要一个接口文件,我可以以某种方式命令ghc放弃其他所有东西,只是给我说接口文件?或者,否则,通过任何一种低级诡计获得该界面?

我找到了这个ghc用户指南部分,它没有说明这一点.这个甚至在其文本中的任何地方都没有提到" 界面 ".(特别是,-fno-code不生成它.)它必须意味着没有简单的方法.在五年前的这个问题中,没有任何东西浮出水面,但是现在情况有所不同?

最有可能的是,我希望它能够成功ghc.如果是这样,我想指示:

  • trac提交功能请求是否合理,或者(可能)我应该自己去做?
  • .hi文件如何区别于-ddump-types二进制文件?
  • 是否确定组成.hi文件所需的编译阶段比完整.o文件少?(例如,如果内部存在机器代码片段的哈希值,.hi则可能必须生成相应的代码,这意味着这里无法获得任何内容.)

否则,也许我可以从ghc代码中提取相关的部分,以便我可以.hi从输出等编译一个文件-ddump-types

Ign*_*rov 6

实际上,有一面旗帜-fno-code -fwrite-interface可以做到这一点.它实际上缩短了编译时间,即使是一个简单的例子大约四分之一.