Я пытаюсь выполнить 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.
Пожалуйста, вы можете сказать мне, Какова причина ошибки? Что мне не хватает?
Но разве это не для экспорта модуля, как если бы это была библиотека? – rhaps0dy
Нет, это для того, чтобы рассказать Кабалу о модулях, которые он не обязательно может найти для себя (что может произойти по многим веским причинам ... не стоит погружаться сюда). В этом случае Cabal должен знать, что ему нужно сгенерировать файл .hs для GHC. –