haskell build-process cabal

haskell - ¿Por qué la herramienta cabal no usa Setup.lhs/Setup.hs?



build-process (1)

He agregado una línea putStrLn "Hello" en la función main de mi Setup.lhs y esperaba verla cuando se ejecuta cabal configure o cabal build . Pero yo no.

Luego compilé Setup.lhs con ghc --make y ejecuté ./Setup configure y se mostró la línea.

Si se hace intencionalmente, no veo ninguna razón detrás de esto e incluso lo necesito en el archivo Setup.lhs . ¿Me puedes aclarar estas cosas?


Lo más probable es que tenga

build-type: Simple

en su archivo .cabal Si selecciona el tipo de compilación Simple , esencialmente promete que su archivo de Setup no hace más que invocar defaultMain , y el binario cabal no lo invocará. Si desea asegurarse de que su archivo de Setup se ejecute cada vez, cambie la línea a

build-type: Custom

También pregunta acerca de las razones para solicitar el archivo de Setup todos modos: en realidad, no es necesario si usa el tipo de compilación Simple . El binario cabal felizmente lo configurará e instalará sin él. Sin embargo, se considera que es un buen estilo incluir un archivo de Setup para cualquier paquete, ya que permitirá a los usuarios instalar el paquete que tenga la biblioteca de Cabal disponible, pero no la herramienta de cabal-install la cabal-install (y Hackage exige la presencia de un archivo de Setup para esta razón).