2013-01-13 47 views
4

我想生成一個.hi接口文件和只有(沒有目標文件,根本沒有代碼生成)。Haskell:如何只用ghc生成.hi文件?

我試圖

ghc -fno-code -ohi out.hi myfile.hs 

,並得到

ghc: -ohi can only be used when compiling a single source file 

我不明白,因爲我只給一個單一的源文件。

+0

爲什麼我要這麼做?因爲我只是想盡可能快地進行類型檢查,並且跳過代碼生成,所以至少可以提高因子3的速度。 – nh2

+0

如果您只想鍵入check,那麼也跳過.hi文件生成。 –

+1

理論上是的,但我想用它來加速檢查整個cabal項目([見這裏](https://github.com/haskell/cabal/issues/1176)),其中可執行文件的依賴關係庫需要.hi文件存在。 – nh2

回答

2

2014年左右,GHC專門爲此增加了一個選項。現在,你可以調用:

ghc -fno-code -fwrite-interface ... 

它在某些情況下實際上加快了編譯速度大約四分之一。

2

使用-c選項,否則GHC想鏈接,而不是僅僅編譯:

ghc -fno-code -ohi out.hi -c myfile.hs 

UPDATE:但它並沒有真正幫助,因爲-fno-code防止.hi創作。

ghc -o /dev/null -ohi out.hi -c myfile.hs 

這一個拋出編譯的結果。但是,如果out.hi是最新的,它也將避免不必要的編譯。

+0

是的,這會給我多次運行所需的加速,但我想完全跳過不必要的步驟。如果我們發現當前的ghc不能做到這一點,我會接受這個作爲解決方法。 – nh2