2012-12-14 2 views
16

Ho aggiunto una rigaalla funzione main del mio Setup.lhs e mi aspettavo di vederlo quando è in esecuzione cabal configure o cabal build. Ma non l'ho fatto.Perché lo strumento di cabal non utilizza Setup.lhs/Setup.hs?

Quindi ho compilato Setup.lhs con ghc --make e ho eseguito ./Setup configure e la linea è stata mostrata.

Se è fatto intenzionalmente, non vedo alcuna logica dietro questo e nemmeno bisogno nel file Setup.lhs affatto. Puoi cancellare queste cose per me?

risposta

27

è più probabile avere

build-type: Simple 

nel file .cabal. Se si seleziona il tipo di build Simple, si promette essenzialmente che il file Setup non fa altro che invocare defaultMain e il binario cabal non lo invocherà. Se si vuole garantire che il file Setup viene eseguito ogni volta, quindi modificare la linea per

build-type: Custom 

Si chiede anche circa la logica per richiedere il file Setup in ogni caso: in realtà, non è necessario se si utilizzare il tipo di build Simple. Il binario cabal sarà felicemente configurato e installato senza. Tuttavia, è considerato buono stile includere un file Setup per qualsiasi pacchetto, poiché consentirà agli utenti di installare il pacchetto che ha la libreria Cabal disponibile, ma non lo strumento cabal-install (e Hackage applica la presenza di un file Setup per questo motivo).

+0

Non sapevo nulla di quel tipo di costruzione. Grazie per la risposta chiara. – arrowd