2012-12-14 7 views
16

Ich habe eine putStrLn "Hello" Zeile in main Funktion meiner Setup.lhs hinzugefügt und erwartet, es zu sehen, wenn cabal configure oder cabal build ausgeführt wird. Aber ich habe es nicht getan.Warum cabal-Tool Setup.lhs/Setup.hs nicht verwendet?

Dann habe ich Setup.lhs mit ghc --make kompiliert und lief ./Setup configure und die Linie zu sehen war.

Wenn es absichtlich getan wird, sehe ich keine Begründung dahinter und sogar brauchen in Setup.lhs Datei überhaupt. Kannst du diese Dinge für mich klären?

Antwort

27

Sie höchstwahrscheinlich

build-type: Simple 

in Ihrer .cabal Datei. Wenn Sie den Build-Typ Simple auswählen, versprechen Sie im Wesentlichen, dass Ihre Setup-Datei nichts anderes tut, als defaultMain aufzurufen, und die cabal-Binärdatei wird sie nicht aufrufen. Wenn Sie sicherstellen möchten, dass Ihre Setup Datei jedes Mal ausgeführt wird, dann ändern Sie die Zeile zu

build-type: Custom 

Sie auch für die Forderung der Setup Datei trotzdem über die Gründe fragen: tatsächlich, es nicht, wenn Sie erforderlich ist Verwenden Sie den Buildtyp Simple. Die cabal Binärdatei konfiguriert und installiert sie ohne. Es wird jedoch als guter Stil angesehen, eine Setup Datei für ein beliebiges Paket einzuschließen, da Benutzer das Paket installieren können, für das die Bibliothek Cabal verfügbar ist, aber nicht das Tool cabal-install (und Hackage erzwingt das Vorhandensein einer Setup Datei aus diesem Grund).

+0

Ich wusste nicht über diese Build-Typ-Sache. Danke für die klare Antwort. – arrowd