2012-02-15 15 views
6

Haskell wiki, yapı sisteminiz olarak Cabal'ı kullanmanız gerektiğini bildiriyor. Ancak, bana daha çok paket üretmeye ve daha sonra ikili bina oluşturmaya yöneltilmiş görünüyor. Temel olarak, tüm yapmak istediğim her * .hs dosyasını src/dizinimde bin/ayrı bir ikili haline getirmektir. Bu makefile güzel bunu gerçekleştirir ama Cabal'a hakkında bilgi edinmek istiyorum ve bu beni başlamak için iyi bir örnek gibi görünüyor:Cabal ile nasıl basit bir proje geliştirebilirim?

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/* 

cevap

8

kolay yolu Başlamak için Cabal sizin için .cabal dosyası oluşturmak için sen misin başlangıç ​​noktası olarak kullanabilir. Bunu yapmak için, proje dizine gidip Daha sonra size paketi hakkında bir sürü soru soracaktır

$ cabal init 

yazın. Eğer paketinizi Hackage'a yüklemeyi planlıyorsanız, yazar adı ve e-posta gibi bazı sorular gerçekten önemlidir, böylece isterseniz boş bırakabilirsiniz. Bunu yaptıktan sonra, özelleştirmek için .cabal dosyasını düzenleyebilirsiniz. Oluşturulan dosya, başlamanıza yardımcı olacak bir yorum grubunu içerecektir. Bundan sonra, sadece

$ cabal configure 
$ cabal build 

varsayılan olarak ikili irade ./dist/build/<name>/ yerleştirilmelidir yazın.

+1

Teşekkürler, bu güzel bir başlangıç. Ancak, çalışan cabal yapılandırması şunu söylüyor: 'Hata: TestProject.cabal'de bir tane belirtmediğim için yürütülebilir TestProject' için 'Ana-İş' alanı bulunamadı. Ancak, her biri kendi "ana" i olan bir çok yürütülebilir dosya oluşturmaya çalıştığımdan, gerçekten ne yapacağımı bilmiyorum. – Psirus

+1

@Psirus: İnşa ettiğiniz yürütülebilir dosya başına bir "Çalışabilir" bölümü isteyeceksiniz. Daha sonra her bir "Ana-İş" alanını ayarlayabilirsiniz. Dosya oluşturulurken "yürütülebilir" seçeneğini seçtiyseniz, dosyaya kopyalayabileceğiniz bir örnek bulunmalıdır. – hammar

+0

Bana yardım ettiğin için teşekkürler. Bu da işe yarıyor, ancak bir "joker" versiyonunu tercih ediyorum, böylece temelde aynı şeyi tekrar tekrar yazmak zorunda kalmam. Ayrıca, ama bu sadece küçük, tüm yürütülebilir dosyaları aynı dizinde alabilir miyim? – Psirus

İlgili konular