我一直在做這個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