2012-02-15 13 views
6

Haskell wikiは、Cabalをビルドシステムとして使うべきだと述べています。しかし、私はバイナリを構築してパッケージを作成するよりははるかに指示されたようです。基本的には、src /ディレクトリ内のすべての* .hsファイルをbin /の別のバイナリにビルドするだけです。このメイクファイルはうまくこれを達成したが、私は陰謀団について学びたいと、これは私が始めるために良い例のように思える:Cabalで簡単なプロジェクトを作成するにはどうすればいいですか?

GHC = ghc 
GHCFLAGS = -outputdir bin 
SRC = $(wildcard src/*.hs) 
BIN = $(patsubst src/%.hs,%,$(SRC)) 

all: $(addprefix bin/, $(BIN)) 

bin/%: src/%.hs 
    $(GHC) $(GHCFLAGS) $< -o [email protected] 

clean: 
    rm bin/* 

答えて

8

始めるための最も簡単な方法は、陰謀団があなたのことをあなたのために.cabalファイルを生成することです出発点として使用することができます。これを行うには、プロジェクトディレクトリに移動して、

$ cabal init 

と入力します。次に、パッケージに関する質問が表示されます。著者名や電子メールのようないくつかの質問は、パッケージをHackageにアップロードする予定がある場合にのみ重要です。その後、.cabalファイルを編集してカスタマイズすることができます。生成されたファイルには、開始に役立つはずのコメントが含まれています。その後、単に

$ cabal configure 
$ cabal build 

を入力し、デフォルトでバイナリ意志を./dist/build/<name>/に配置します。

+1

ありがとうございました。これは素晴らしいスタートです。しかし、実行中のcabal configureは次のように言っています: 'Error:No '実行可能なTestProject'のための' Main-Is 'フィールドが見つかりました。おそらくTestProject.cabalで指定していないからです。しかし、私はいくつかの実行可能ファイルをビルドしようとしているので、それぞれがそれ自身の 'メイン'であるので、私は本当に何をすべきかわかりません。 – Psirus

+1

@Psirus:ビルドしている実行ファイルごとに 'Executable'セクションが1つ必要です。次に、それぞれに 'Main-Is'フィールドを設定することができます。ファイルを生成するときに "実行可能"を選択した場合、そのファイルにコピーできる例があるはずです。 – hammar

+0

ここで私を助けてくれてありがとう。これも動作しますが、私は "ワイルドカード"バージョンを好むので、基本的に同じことを何度も何度も繰り返す必要はありません。また、これはほんのわずかですが、同じディレクトリにすべての実行可能ファイルを持つことはできますか? – Psirus

関連する問題