通常,当ghc
正在编译源代码时,它将至少生成.o
(对象)和.hi
(接口)文件。
为了减少编译时间,如果我只需要一个接口文件,我可以以某种方式命令ghc
放弃其他所有内容而只是给我说接口文件吗?或者,否则,通过任何一种低级诡计获得该界面?
我发现this ghc
user guide part并没有说明这一点。 This one甚至没有在其文本中的任何位置提及“ interface ”。 (特别是,-fno-code
不生成它。)它必须意味着没有简单的方法。在this question from five years ago中,没有任何东西浮出水面,但是现在情况有所不同?
最有可能的是,我希望它会对ghc
进行攻击。如果是这样,我想指示:
.hi
文件如何与-ddump-types
,只是二进制文件.hi
文件的编译阶段严格少于完整的.o
文件? (例如,如果.hi
中存在机器代码片段的哈希值,则可能必须生成相应的代码,这意味着这里无法获得任何内容。)否则,也许我可以从ghc
代码中提取相关部分,以便我可以从.hi
的输出等编译-ddump-types
文件?
答案 0 :(得分:6)
实际上,有一个标志-fno-code -fwrite-interface
可以做到这一点。它实际上缩短了编译时间,即使是一个简单的例子大约四分之一。