我一直在做这个Haskell项目,我有一个cabal文件。现在,我的项目被组织为一个实现简单解释器的库。我也有一个非常短的主文件,需要将其构建到可执行文件中以调用库。我想要做的是:如何避免在这个cabal文件中重新编译?
1)编译库和揭露一些模块
2)的编译后的可执行
我有工作,似乎做一个小集团文件。问题是当它编译可执行文件时,重新编译已经在步骤(1)中编译的所有模块。我不明白为什么会这样做 - 是否有任何方法可以阻止它,创建两个单独的cabal文件?
我真的不想创建两个单独的cabal文件,因为cabal似乎不想在同一个目录中同时存在cabal文件,而且我也不想为它创建单独的项目目录第二步,因为它基本上相当于编译单个文件。
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
谢谢你。它现在有效。 – chrisdb
啊,这个如何使可执行文件依赖于同一个cabal文件中的库。 – nh2
有关适合这种情况的可能的项目布局,请参见[如何使用库+可执行文件构建一个仍然使用runhaskell/ghci运行的Haskell cabal项目?](http://stackoverflow.com/questions/12305970/how-to-让-A-哈斯克尔-阴谋项目与 - libraryexecutables - 即-仍然运行与)。 – nh2