質問
ghc --make foo.hs
を介してhaskellソースファイルをコンパイルすると、GHCは常に foo.exe
以外のさまざまな中間ファイルを残します。これらは foo.hi
と foo.o
です。
フォルダが乱雑にならないように、多くの場合、.hiファイルと.oファイルを削除する必要があります。
GHCが中間ファイルを残さないためのコマンドラインオプションはありますか? (#haskellで尋ねられたとき、私が得た最良の答えは ghc --make foo.hs&& rm foo.hi foo.o
。
解決
GHCドキュメントを少し調べましたが、一時ファイルを自動的に削除する組み込みの方法はないようです-結局、GHCは最終的な実行可能ファイルをビルドするためにそれらの中間ファイルを必要とします。 GHCがモジュールを再コンパイルする必要がないことがわかっている場合、それらの存在によりコンパイル全体が高速化されます。
ただし、 - outputdir
オプションが役立ちます。すべてのオブジェクトファイル( .o
)、インターフェイスファイル( .hi
)、およびFFIスタブファイルを指定したディレクトリに配置します。まだ「乱雑」です。少なくとも作業ディレクトリにはありません。
他のヒント
私の通常のワークフローは、ghcではなくcabalを直接使用することです。これにより、outputdirオプションが適切なビルドフォルダーに設定され、hadockドキュメントのビルドなどを実行できます。必要なのは、プロジェクトの.cabalファイルを定義し、ghcを直接実行する代わりにcabal installまたはcabal buildを言うだけです。ハッカーに関する作業を共有したい場合は、最後にこのプロセスに従う必要があるため、この方法を使用することをお勧めします。パッケージの依存関係も管理できます。
GHCにオプションが追加されました no- keep-hi-files
および no-keep-o-files
。詳細については、こちらをご覧ください。
-hidirを/ dev / nullに設定すると、そこに送信できます。また、一般に-fno-codeオプションは多くの出力をオフにします。 Cabalを使用したいだけかもしれません。
-hidir / -odir / -outputdirを使用しても意味がないことが判明しました。 / dev / nullはファイルであり、ディレクトリではありません。 http://www.haskell.org/pipermail/xmonad/2010を参照してください。 -May / 010182.html