nh2
nh2

Reputation: 25695

Haskell: How to only generate .hi file with ghc?

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.

Upvotes: 5

Views: 1518

Answers (2)

Ignat Insarov
Ignat Insarov

Reputation: 4832

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.

Upvotes: 4

Anton Kovalenko
Anton Kovalenko

Reputation: 21507

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.

Upvotes: 3

Related Questions