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

时间:2018-02-08 09:46:55

标签: haskell ghc

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

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

我发现this ghc user guide part并没有说明这一点。 This one甚至没有在其文本中的任何位置提及“ interface ”。 (特别是,-fno-code不生成它。)它必须意味着没有简单的方法。在this question from five years ago中,没有任何东西浮出水面,但是现在情况有所不同?

最有可能的是,我希望它会对ghc进行攻击。如果是这样,我想指示:

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

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

1 个答案:

答案 0 :(得分:6)

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