2013-08-08 12 views
10

Cabal構成ファイルを書き込む可能性があります。これには複数のLibrary sectionsが含まれていますか?複数のライブラリセクションを含むカバレッジ

私はthe documentationに図書館セクションおよび実行可能ファイルセクションの記述を見つけたので、1つのカバル設定ファイルに多くのライブラリセクションを配置することは不可能であること、らしいです。

しかし、いくつかのHaskellライブラリといくつかの実行可能ファイルを同時に開発している場合はどうすればいいですか?
を同時にコンパイルしてテストしたいのですが?

答えて

4

私の問題は、最新ので簡単に解決できることが判明しました。あなたは2つのプロジェクト持っていれば

ABを、あなたがそれらを並行して開発したい、その素敵はcabal-dev install A Bを使用する - それは構築し、ローカルcabal-devリポジトリにそれらの両方をインストールします。 このコマンドを再実行すると、再構築され、必要に応じて再インストールされます。文書によると

- あなたはにしたい場合はローカル徒党-devののhackageパッケージを既存の新しいまたはオーバーライドを登録し、あなたがcabal-dev add-sourceを使用する必要があり、基本的にソースをコピーして、あなたはそれのようにそれをインストールすることができますhackageで入手できました。

7

AFAIKでは、複数のライブラリをカバールファイルに配置することはできません。 Nameフィールド(キャブファイルの最上位レベル)に指定された名前がライブラリの名前として使用されるため、追加のライブラリの名前を指定する仕組みがないようです。

実際には、これは問題ではありませんでした。私は、独自のカバールファイルを持つ別のディレクトリに各ライブラリを開発します。開発したライブラリでcabal installを実行すると、Hackageのパッケージと同じように実行可能ファイル(Build-Dependsセクション)のカバールファイルで参照できます。

だから、例えば、あなたは次のようになり徒党ファイルとの2つのライブラリがある場合:

Name:    my-library-1 
. . . 

Name:    my-library-2 
. . . 

を次に、このようにそれらを参照することができ、あなたの実行のための秘密結社のファイル:

Name:    my-program 
. . . 
Executable run-program 
Main-Is:   Main.hs 
Build-Depends: my-library1, 
        my-library2, 
        . . . 

ライブラリの特定のバージョンを要求することもできます。例:

Build-Depends: my-library1==1.2.*, 
        my-library2>=1.3 
+0

ありがとう、私はこれをこのように使うことができると知っていますが、私は一度に複数のライブラリを開発するプロセスを簡素化したいと思っていました。それらを常に構築して再インストールしましたが、 'cabal-dev' 。 –

+0

ああ、私はあなたが 'cabal-dev'でこのようなことをすることができるとは思わなかった。あなたはそれをどのようにして記述し、答えとして投稿し、それを受け入れることができます。他の人がこのソリューションに興味があるかもしれません。 – mhwombat

+0

@mhwombad - 以下を参照してください:) –

0

これは、内部ライブラリ、いわゆる "便利な"ライブラリを持つCabal 2で可能です:https://github.com/haskell/cabal/pull/3022。これにより、これらのライブラリをインストールすることはできませんが、最終的な実行ファイルと.cabalファイルで公開されている公開ライブラリに構成することのみが許可されています。進行中の複数のものを構築する場合は、cabal.projectファイルを使用する必要があります。http://blog.ezyang.com/2016/05/announcing-cabal-new-build-nix-style-local-builds/にはこれに関する情報があります。

関連する問題