Haskell Cabal库无法导入暴露的模块
我的foo.cabal文件如下所示:Haskell Cabal库无法导入暴露的模块,haskell,cabal,Haskell,Cabal,我的foo.cabal文件如下所示: library exposed-modules: Foo.Bar, Foo.Something hs-source-dirs: lib default-language: Haskell2010 executable foobar main-is: Main.hs other-modules: Utils, -- Local module in ./src
library
exposed-modules:
Foo.Bar,
Foo.Something
hs-source-dirs: lib
default-language: Haskell2010
executable foobar
main-is: Main.hs
other-modules:
Utils, -- Local module in ./src
Foo.Bar
hs-source-dirs: src
default-language: Haskell2010
根据此处的示例代码:
我得到以下错误:
$ cabal build
Resolving dependencies...
Configuring foobar-0.1.0.0...
Preprocessing executable 'foobar' for foobar-0.1.0.0..
cabal: can't find source for Foo/Bar in src, dist/build/foobar/autogen,
dist/build/global-autogen
您必须将库添加到可执行文件的依赖项中。这是你的阴谋集团文件的hpack版本,我永远记不起阴谋集团的语法:
name: foo
version: 0.1.0
dependencies:
- base
source-dirs: lib
# no need for exponsed-modules, hpack does that for you
executable:
main: Main.hs
source-dirs: src
dependencies:
- base
- foo
或者只需使用
stacknew
,您就可以得到一个工作项目。将行builddependens:foo
添加到您的可执行文件节中,以指示可执行文件取决于您定义的库。没有办法绕过stack-huh?对于阴谋集团来说,这似乎是一件简单的事情,我想知道在我切换之前是否能从中获得更多的里程对不起,我实际上切换到了hpack,但我仍然无法获得想要的行为。我需要公开一些库,并将公开模块作为依赖项添加到可执行文件中。此解决方案不声明库部件。