Tekrarını azaltmak için ne yap-bağlı bir alanları .cabal dosya?
İşte .dosya cabal:
Name: myprogram
Version: 0.1
-- blah blah blah
Cabal-version: >=1.9.2
Executable myprogram
HS-source-dirs: src
Main-is: Main.hs
Build-depends: attoparsec == 0.10.*,
base == 4.3.*,
-- long long list of packages
Test-Suite test
HS-source-dirs: test, src
Type: exitcode-stdio-1.0
Main-is: Main.hs
Build-depends: attoparsec == 0.10.*,
base == 4.3.*,
-- long long list of packages
QuickCheck == 2.4.*
Orada build-depends test paketleri suite ile uzun listeyi değiştirmek için ne yapabilirim "yürütülebilir olarak aynı, artı QuickCheck"?
Düzenleme:sürüm bilgileri.
- cabal-dev 0.9
- cabal-yükleme 0.10.2
- Cabal kütüphane 1.10.2.0
- DZD 7.0.4
- Haskell Platform 2011.4.0.0
CEVAP
Orada build-depends test paketleri suite ile uzun listeyi değiştirmek için ne yapabilirim "yürütülebilir olarak aynı, artı QuickCheck"?
Bildiğim kadarıyla yok. Ancak, sadece bağlıdır paketleri oluşturmak sonra, üç hedef halinde proje yapılandırarak listesi bahsetmek için bir yol var:
- tüm kodu içerir ve uzun ihtiyacı olan bir kütüphane inşa-bağlı liste.
- sadece bir dosya oluşur, ve temel ve yukarıdan Kütüphanesi bağlı olan bir yürütülebilir.
- bir yukarıdan kütüphane bağlıdır-suite test ve test kullanıyorsunuz paketleri.
Belki de bu yaklaşım indygemma cevap öneriyor ama cabal dosyası oldukça Norman Ramsey yorum belirttiği gibi bunu başarmak olmaz önerdi. İşte cabal dosyası ne gerek ana hatlarını. Benim için çalışan tam bir örnek için, this cabal file bakabilirsiniz.
name: my-program
version: ...
library
hs-source-dirs: src-lib
build-depends: base, containers, ...
exposed-modules: My.Program.Main, ...
executable my-program
hs-source-dirs: src-exec
main-is: my-program.hs
Build-depends: base, my-program
test-suite tests
type: exitcode-stdio-1.0
hs-source-dirs: src-test
main-is: tests.hs
other-modules: ...
build-depends: base, my-program, test-framework, ...
Önemli noktalar:
Üç hedefi için üç ayrı kaynak dizin vardır. Bu gerekli diğer hedefleri oluştururken kütüphane dosyaları yeniden gelen dzd durdurmak.
Uygulama tüm kod kütüphanede. Yürütülebilir sarıcı, bu gibi:
import My.Program.Main (realMain) main = realMain
Kütüphane test için gerekli olan tüm modülleri gösterir.
Son nokta bu yaklaşımın dezavantajı özeti: iç modülleri ifşa etmek zorunda kalırsınız. Ana parası bu yaklaşım olduğunu size daha az tekrar olarak cabal dosyası, ve belki daha da önemlisi, daha az tekrar yap işlemi: kütüphane kodu olacak inşa sadece bir kez, ve sonra bağlı iki yürütülebilir ve test suite.
Dosya giriş alanları değişiklikleri ko...
Xcode4 Sorun Bağlama. Dosya mimarisi b...
Nasıl bir form giriş alanları için ist...
Nasıl özel yöntemleri, alanları veya i...
Nasıl bir proje içinde tek bir dosya i...