2015-10-16 67 views
0

命令cabal install正常工作,cabal configure --enable-tests也正常工作。然而,當我運行cabal build -j它不會編譯:集成HUnit與Cabal的問題

Building MoodleLatex-0.1.0.0... 
Preprocessing executable 'moddlelat' for MoodleLatex-0.1.0.0... 
Preprocessing test suite 'Moodle-Tests' for MoodleLatex-0.1.0.0... 
In-place registering Moodle-Tests-0.1.0.0... 
[1 of 1] Compiling Main    (dist/build/Moodle-TestsStub/Moodle-TestsStub-tmp/Moodle-TestsStub.hs, dist/build/Moodle-TestsStub/Moodle-TestsStub-tmp/Main.o) 
Linking dist/build/Moodle-TestsStub/Moodle-TestsStub ... 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.text+0x26): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziTypes_zdfShowMoodleVal_closure' 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.text+0xd9): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziTypes_zdfShowMoodleVal_closure' 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.text+0xeba): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziParser_parseExpr2_closure' 
[..snip..] 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.data+0x570): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziParser_parseExpr2_closure' 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.data+0x578): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziParser_parseExpr9_closure' 
/home/miki/exp/moodle/dist/build/libMoodle-Tests.a(Moodle.o):(.data+0x580): undefined reference to `MoodlzuHFs0eta1wVtKnH9dbfcoDT_MoodleziParser_zdwa1_closure' 
collect2: error: ld returned 1 exit status 

這是源目錄的結構:

src 
├── Main.hs 
├── Moodle 
│   ├── Parser.hs 
│   ├── Translator.hs 
│   └── Types.hs 
└── Test 
    └── Moodle.hs 

這是我的陰謀集團的文件(相關線路只):

name:    MoodleLatex 
version:    0.1.0.0 
category:   Text 
build-type:   Simple 
extra-source-files: README.md 
cabal-version:  >=1.10 

executable moddlelat 
    main-is:    Main.hs 
    -- other-modules: 
    other-extensions: OverloadedStrings 
    build-depends: base  >=4.8 && <4.9 
       , scientific >=0.3 && <0.4 
       , text  >=1.2 && <1.3 
       , attoparsec >=0.13 && <0.14 
    hs-source-dirs:  src 
    default-language: Haskell2010 

Test-Suite Moodle-Tests 
    type:   detailed-0.9 
    test-module: Test.Moodle 
    build-depends: base  >=4.8 && <4.9 
       , scientific >=0.3 && <0.4 
       , text  >=1.2 && <1.3 
       , attoparsec >=0.13 && <0.14 
       , Cabal 
       , HUnit 
       , cabal-test-hunit 
    hs-source-dirs:  src 
    default-language: Haskell2010 

我按照cabal-test-hunit README中的步驟操作。我也想知道,是否有必要兩次聲明依賴關係?!這不是很乾。

編輯:它似乎無法找到我的模塊。但是,如果我添加MoodleLatexbuild-depends我碰到另一個錯誤:

Building MoodleLatex-0.1.0.0... 
Preprocessing executable 'moddlelat' for MoodleLatex-0.1.0.0... 
Preprocessing test suite 'Moodle-Tests' for MoodleLatex-0.1.0.0... 
<command line>: cannot satisfy -package-id MoodleLatex-0.1.0.0-inplace 

回答

1

你應該附加模塊添加到other-modules領域。如果使用Stack構建,它應該給出關於哪些模塊需要指定的警告。

+0

你說得對,這是讓我絆倒了! – rubik