2012-12-14 17 views
16

Dodałem linię putStrLn "Hello" do funkcji main mojego pliku Setup.lhs i spodziewałem się zobaczyć ją podczas uruchamiania cabal configure lub cabal build. Ale ja nie.Dlaczego narzędzie cabal nie używa Setup.lhs/Setup.hs?

Następnie skompilowałem Setup.lhs z ghc --make i uruchomiłem ./Setup configure, a linia została wyświetlona.

Jeśli zrobiono to celowo, nie widzę uzasadnienia tego, a nawet potrzeby w pliku Setup.lhs. Czy możesz mi to wyjaśnić?

Odpowiedz

27

Najprawdopodobniej mają

build-type: Simple 

w pliku .cabal. Jeśli wybierzesz typ kompilacji Simple, zasadniczo obiecujesz, że twój plik Setup nie wywoła nic oprócz wywołania defaultMain, a plik binarny nie wywoła go. Jeśli chcesz się upewnić, że plik Setup jest uruchamiany za każdym razem, a następnie zmienić linię do

build-type: Custom 

też poprosić o uzasadnienie konieczności plik Setup i tak: w rzeczywistości, to nie jest wymagana, jeśli użyj typu kompilacji Simple. Plik binarny cabal z powodzeniem skonfiguruje i zainstaluje go bez. Uważa się jednak, że dobrym stylem jest dołączenie pliku Setup dla dowolnego pakietu, ponieważ pozwoli to użytkownikom zainstalować pakiet, który ma dostępną bibliotekę z dostępną biblioteką, ale nie narzędzie cabal-install (i Hackage wymusza obecność pliku Setup z tego powodu).

+0

Nie wiedziałem o tym rodzaju budowy. Dzięki za jasną odpowiedź. – arrowd

Powiązane problemy