我想生成一個.hi
接口文件和只有(沒有目標文件,根本沒有代碼生成)。Haskell:如何只用ghc生成.hi文件?
我試圖
ghc -fno-code -ohi out.hi myfile.hs
,並得到
ghc: -ohi can only be used when compiling a single source file
我不明白,因爲我只給一個單一的源文件。
我想生成一個.hi
接口文件和只有(沒有目標文件,根本沒有代碼生成)。Haskell:如何只用ghc生成.hi文件?
我試圖
ghc -fno-code -ohi out.hi myfile.hs
,並得到
ghc: -ohi can only be used when compiling a single source file
我不明白,因爲我只給一個單一的源文件。
2014年左右,GHC專門爲此增加了一個選項。現在,你可以調用:
ghc -fno-code -fwrite-interface ...
它在某些情況下實際上加快了編譯速度大約四分之一。
使用-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
是最新的,它也將避免不必要的編譯。
是的,這會給我多次運行所需的加速,但我想完全跳過不必要的步驟。如果我們發現當前的ghc不能做到這一點,我會接受這個作爲解決方法。 – nh2
爲什麼我要這麼做?因爲我只是想盡可能快地進行類型檢查,並且跳過代碼生成,所以至少可以提高因子3的速度。 – nh2
如果您只想鍵入check,那麼也跳過.hi文件生成。 –
理論上是的,但我想用它來加速檢查整個cabal項目([見這裏](https://github.com/haskell/cabal/issues/1176)),其中可執行文件的依賴關係庫需要.hi文件存在。 – nh2