40

GHCを介してhaskellソースファイルをコンパイルする場合、ghc --make foo.hs常に。以外のさまざまな中間ファイルが残りますfoo.exe。これらはfoo.hifoo.oです。

フォルダが乱雑にならないように、.hiファイルと.oファイルを削除しなければならないことがよくあります。

GHCが中間ファイルを残さないようにするためのコマンドラインオプションはありますか?(#haskellで尋ねられたとき、私が得た最良の答えはでしたghc --make foo.hs && rm foo.hi foo.o

4

6 に答える 6

38

私はGHCのドキュメントを少し読みましたが、一時ファイルを自動的に削除する組み込みの方法はないようです-結局のところ、GHCは最終的な実行可能ファイルをビルドするためにそれらの中間ファイルを必要とし、それらの存在速度を示しますGHCがモジュールを再コンパイルする必要がないことを知っている場合は、全体的なコンパイルを増やします。

ただし、オプションを設定する-outputdirと役立つ場合があります。これにより、すべてのオブジェクトファイル(.o)、インターフェイスファイル(.hi)、およびFFIスタブファイルが指定されたディレクトリに配置されます。それはまだ「雑然」ですが、少なくともそれはもうあなたの作業ディレクトリにはありません。

于 2009-09-11T16:31:40.963 に答える
18

GHCにオプション no-keep-hi-filesとが追加されno-keep-o-filesました。詳細については、こちらをご覧ください。

于 2018-06-28T21:03:10.310 に答える
16

私の通常のワークフローは、ghcではなくcabalを直接使用することです。これにより、outputdirオプションが適切なビルドフォルダーに設定され、haddockドキュメントのビルドなどを実行できます。必要なのは、プロジェクトの.cabalファイルを定義してから、ghcを直接実行する代わりに、cabalinstallまたはcabalbuildと言うことです。ハッキングに関する作業を共有したい場合は、最終的にこのプロセスに従う必要があるため、参加することをお勧めします。これは、パッケージの依存関係の管理にも役立ちます。

于 2009-09-11T17:13:14.903 に答える
6

-hidirを/dev/ nullに設定して、そこに送信できると思います。また、-fno-codeオプションは一般に、多くの出力をオフにします。Cabalを使用することもできます。

于 2009-09-12T09:05:22.987 に答える
3

-hidir / -odir/-outputdirを使用するのは適切ではないことがわかりました。/ dev / nullはファイルであり、ディレクトリではありません。http://www.haskell.org/pipermail/xmonad/2010-May/010182.htmlを参照してください

于 2010-05-13T15:42:20.750 に答える
1

ワークフローを少し改善するために2セント:
次のエイリアスを.bashrc(または同様の)構成ファイルに入れることができます:

alias hsc='_hsc(){ ghc -no-keep-hi-files -no-keep-o-files "$@";}; _hsc'

そして、ただ電話する

$ hsc compose.hs 
[1 of 1] Compiling Main             ( compose.hs, compose.o )
Linking compose ...
$ ls
compose  compose.hs
于 2021-09-13T17:12:54.087 に答える