Вики Haskell утверждают, что вы должны использовать Cabal в качестве системы сборки. Однако мне кажется, что он больше направлен на создание пакетов, чем просто на сборку двоичных файлов. По сути, все, что я хочу сделать, это собрать каждый файл *.hs в моем каталоге src/ в отдельный двоичный файл в bin/. Этот make-файл отлично справляется с этой задачей, но я хочу узнать о 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 $@
clean:
rm bin/*