2012-05-17 10 views
9

Haskellプロジェクトでは、依存関係のリスト全体を自動的に計算する方法はありますか?含まれているが必須ではないライブラリだけでなく、それが依存するすべてのライブラリ。プロジェクトの依存関係を自動的に一覧表示する

+0

Cabalは、あなたが 'cabal init'を実行するときに依存関係を見つけようとします。それはあなたが考えていた機能の一種ですか? –

+0

どの段階ですか?私はCabal initを使用していましたが、依存関係を把握することはできませんでした。 –

+1

どのステージですか?いくつかのコードを書いて、あなたのプロジェクトをカバレージする準備ができている段階(.cabalファイルを作成する段階)。充分に新しいバージョンのカバールがモジュールを読み、依存関係を推測しようとします。 –

答えて

8

私がコメントで言ったように、cabal-installはこれをしています(私はcabal-install 0.14.0を使っています)。これはモジュールルックアップ(GHCiなど)でパッケージを推測しています。それは実際の知性を持っていません。あなたがインストールしたバージョンのマッチメジャーバージョンにバージョンを設定するだけです。

以下は、Data.Vectorをインポートし、cabal-installをインポートするダミーパッケージを作成しています。私はvector 0.9。*を使用しています。

[[email protected] blah]$ pwd 
/tmp/blah 
[[email protected] blah]$ cat Data/Blah.hs 
module Data.Blah where 

import Data.Vector 
[[email protected] blah]$ cabal init 
Package name? [default: blah] 
...SNIP... 
What does the package build: 
    1) Library 
    2) Executable 
Your choice? 1 
Include documentation on what each field means (y/n)? [default: n] 

Guessing dependencies...   <--- SEE, SEE! YAY! 

Generating LICENSE... 
Warning: unknown license type, you must put a copy in LICENSE yourself. 
Generating Setup.hs... 
Generating blah.cabal... 

You may want to edit the .cabal file and add a Description field. 
[[email protected] blah]$ cat blah.cabal 
-- Initial blah.cabal generated by cabal init. For further documentation, 
-- see http://haskell.org/cabal/users-guide/ 

name:    blah 
version:    0.1.0.0 
synopsis:   Sisponys 
-- description:   
-- license:    
license-file:  LICENSE 
author:    Me 
maintainer:   [email protected] 
-- copyright:   
-- category:    
build-type:   Simple 
cabal-version:  >=1.8 

library 
    exposed-modules:  Data.Blah 
    -- other-modules:  
    build-depends:  base ==4.5.*, vector ==0.9.* <-- SEE?? SEE! YIPPEE!! 
+0

私は 'cabal-install version 0.10.2'を使用しています。これはHaskellプラットフォームにバンドルされたバージョンなので、最近の機能だと思います。 –

+0

@VladtheImpala最新の0.14.0リリースが必要だと思います。さまざまな 'キャバル初期化'の改良が含まれています。 –

関連する問題