问题
I would like to generate an .hi interface file and only that (no object file, no code generation at all).
I tried
ghc -fno-code -ohi out.hi myfile.hs
and get
ghc: -ohi can only be used when compiling a single source file
which I don't understand since I have only given a single source file.
回答1:
Around 2014, there was an option added to GHC specifically for this. Now, you can invoke:
ghc -fno-code -fwrite-interface ...
It actually speeds up compilation by about a quarter in some cases.
回答2:
Use -c option, or else ghc wants to link, not just to compile:
ghc -fno-code -ohi out.hi -c myfile.hs
UPDATE: but it doesn't really help, because -fno-code prevents .hi creation.
ghc -o /dev/null -ohi out.hi -c myfile.hs
This one throws away the result of compilation. However, it will also avoid unnecessary compilation if out.hi is up to date.
来源:https://stackoverflow.com/questions/14306934/haskell-how-to-only-generate-hi-file-with-ghc