He estado trabajando en este proyecto Haskell, y tengo un archivo cabal para él. Ahora, mi proyecto está estructurado como una biblioteca que implementa un intérprete simple. También tengo un archivo principal muy corto que debe compilarse en un archivo ejecutable para llamar a la biblioteca. Lo que quiero hacer es:¿Cómo evitar recompilar en este archivo cabal?
1) compilar la biblioteca y exponer algunos de los módulos
2) compilar el ejecutable
Tengo un archivo de Cabal que funciona y parece hacer esto. El problema es que cuando compila el ejecutable, recompila todos los módulos que ya se han compilado en el paso (1). No entiendo muy bien por qué lo hace, ¿hay alguna forma de detenerlo, salvo crear dos archivos cabal seguidos?
Realmente no quiero crear dos archivos cabal separados, porque a cabal no parece gustarle tener ambos archivos cabal en el mismo directorio, y realmente no quiero configurar un directorio de proyecto separado para el segundo paso, ya que básicamente equivale a compilar un solo archivo.
cabal-version: >= 1.6
build-type: Simple
name: HaSC
version: 0.2.3
license: OtherLicense
category: Language
author: Chris B
maintainer: Chris B
copyright: Chris B 2010 - 2011
synopsis: (HA)skell (S)ound (C)hange applier (HaSC) library
description: HaSC implements a little language for applying sound changes to words
homepage: http://www.chrisdb.me.uk/redmine/projects/haskell-sound-change
stability: Alpha
data-files: doc/HaSCDoc.pdf
license-file: LICENSE
library
build-depends:
base >= 4.3,
containers >= 0.3,
parsec >= 3,
parallel >= 3.1,
deepseq >= 1.1,
mtl >= 1.1,
transformers >= 0.2,
text >= 0.10,
text-icu >= 0.6.3,
pretty >= 1,
directory >= 1.1,
filepath >= 1.2
hs-source-dirs: src
exposed-modules: HaSC.IO.Disk,
HaSC.IO.Memory,
HaSC.Exec
other-modules: HaSC.AST,
HaSC.IO,
HaSC.IdentMap,
HaSC.Parse,
HaSC.Regex,
HaSC.Representation,
HaSC.Transformations,
HaSC.Search,
HaSC.State
executable HaSC
GHC-Options: -rtsopts
hs-source-dirs: src
main-is: Main.hs
Gracias por eso. Ahora funciona. – chrisdb
Ah, así es como uno hace que los ejecutables dependan de la biblioteca en el mismo archivo cabal. – nh2
Para un posible diseño del proyecto que se ajuste a situaciones como esta, vea [Cómo hacer un proyecto Cabal de Haskell con biblioteca + ejecutables que todavía se ejecutan con runhaskell/ghci?] (Http://stackoverflow.com/questions/12305970/how-to- make-a-haskell-cabal-project-with-libraryexecutables-that-still-run-with). – nh2