2013-02-14 6 views
5

これは簡単なはずですが、これを理解できないようです。 ProjectAとProjectBの2つのプロジェクトがあります。 ProjectBは古いプロジェクトProjectAに依存しています。今私はProjectBを作りたいと思っています。そして、私は今ProjectAのディレクトリ構造を変更したくありません。問題は、私は常にProjectAで-outputdir binを使用したことです。今、私は独自の個別-outputdirで、ProjectBのと別のフォルダを持っているGHCで別々のプロジェクトにリンクする

ProjectA/ 
    bin/ 
    (*.o, *.hi in proper paths, sometimes also *.p_o and *.p_hi) 
    Foo/ 
    ModuleX.hs 
    ModuleA.hs 
    ModuleB.hs 

PROJECTAはこのように見えました。私は、(ProjectAファイルを再コンパイルせずに)古いプロジェクトオブジェクトファイルにリンクするだけでいいです。私はおそらくProjectAをキャバレーズすることができることを認識しています...しかし、簡単な方法はありませんか?

+0

ビルドシステムが必要です。カバール(またはメークファイル)が好きではない場合は、揺れてみてください(http://community.haskell.org/~ndm/shake/) – Jonke

+0

ありがとう、私は揺れをチェックしますが、私は本当に交換する必要はありません。実際、私は今、かなりの幸せなユーザーです。問題は、GHCが十分にカスタマイズ可能ではないような.oと.hiファイルを検索するこの奇妙な方法を持っているようだということです。 つまり、-outputdir binを追加すると、bin内のコンパイル済みファイルが検索され、ProjectA/binに変更する方法が見つかりません – Samee

答えて

2

「簡単な方法」は、Cabalを使用することです。 Project Aをインストールしたら、実際にどこに格納されているのかを心配する必要はありません。 GHCはただそれを見つけるでしょう。

これをしたくない場合は、-i GHCに切り替えて、コンパイル済みのものを検索するフォルダを指定してみてください。

http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/separate-compilation.html

+0

これをポストする前にすでに-iを試しました。 ProjectAのすべてを再コンパイルすることを除いて、私が望むものはすべて行います。私は 'gcc x.o y.o'のアナログを探すことを望んでいました。 – Samee

+0

Cabalの場合、それはうまくいきますが、これを2-3個のプロジェクトにしか使用しないときは、〜/ .cabalフォルダにドロップしたくありません。私はこれがすべてのプロジェクトのための私の検索パスにこれまでにあることを望んでいません。 – Samee

+1

興味深い。ドキュメンテーションは、 '--make'モードでは、指定されたディレクトリの_source_ファイルを探しますが、それ以外の場合はインタフェース(とおそらくオブジェクト)ファイルを探します。もちろん、GHC 7(?) '--make'モードが常にデフォルトになっているので、それをオフにする方法がわかりません... – MathematicalOrchid

関連する問題