2015-06-24 4 views
1

Я пытаюсь выполнить c2hs и хотел скомпилировать небольшой пример общей библиотеки с Cabal для начала.Cabal build c2hs не находит модуль .chs

У меня есть следующий соответствующий раздел Кабал файла test.cabal:

executable libtest.so 
    hs-source-dirs:  src 
    main-is:    Dummy.hs 
    other-extensions: ForeignFunctionInterface 
    build-depends:  base 
    default-language: Haskell2010 
    ghc-options:   -no-hs-main -threaded 
    build-tools:   c2hs 

Тогда источник. src/Dummy.hs:

import Test 

main :: IO() 
main = return 

В файле src/Test.chs

{-# LANGUAGE ForeignFunctionInterface #-} 
import Foreign 
import Foreign.C 

module Android where 

А потом, когда я пытаюсь скомпилировать (cabal configure && cabal build -v) я получаю следующее сообщение об ошибке:

Component build order: executable 'libtest.so' 
creating dist/build 
creating dist/build/autogen 
Building test-0.1.0.0... 
Preprocessing executable 'libtest.so' for test-0.1.0.0... 
Building executable libtest.so... 
creating dist/build/libtest.so 
creating dist/build/libtest.so/libtest.so-tmp 
/opt/ghc/bin/ghc --make -no-link -fbuilding-cabal-package -O -j8 -static 
-outputdir dist/build/libtest.so/libtest.so-tmp -odir dist/build 
/libtest.so/libtest.so-tmp -hidir dist/build/libtest.so/libtest.so-tmp-stubdir 
dist/build/libtest.so/libtest.so-tmp -i -idist/build/libtest.so/libtest.so-tmp 
-isrc -idist/build/autogen -Idist/build/autogen 
-Idist/build/libtest.so/libtest.so-tmp 
-optP-include -optPdist/build/autogen/cabal_macros.h -hide-all-packages 
-package-db dist/package.conf.inplace -package-id 
base-4.7.0.1-1a55ebc8256b39ccbff004d48b3eb834 -XHaskell2010 
src/Dummy.hs -no-hs-main -threaded 

src/Dummy.hs:1:8: 
    Could not find module ‘Test’ 
Use -v to see a list of the files searched for. 

Пожалуйста, вы можете сказать мне, Какова причина ошибки? Что мне не хватает?

ответ

2

Необходимо добавить тест в поле других модулей.

+0

Но разве это не для экспорта модуля, как если бы это была библиотека? – rhaps0dy

+1

Нет, это для того, чтобы рассказать Кабалу о модулях, которые он не обязательно может найти для себя (что может произойти по многим веским причинам ... не стоит погружаться сюда). В этом случае Cabal должен знать, что ему нужно сгенерировать файл .hs для GHC. –