如何使用 cabal/stack 添加新的可执行文件?

How to add a new executable with cabal/stack?

我想向我的项目添加一个新的可执行文件。但它无法解析 build-depends 处的 MyProject.cabal。当我从 build-depends 中删除 MyProject 时,它说找不到目标 TestExample

我尝试像这样加载 TestExamplestack ghci TestExample

name:                  MyProject
cabal-version:         >=1.10


library
  hs-source-dirs:      src
  exposed-modules:     MyProject
                     , MyProject.Other
  build-depends:       base
                     , text


executable TestExample
  hs-source-dirs:      examples
  main-is:             TestExample.hs
  build-depends:       base
                     , MyProject
                     , MyProject.Other

在 cabal 文件中 build-depends 是包列表,而不是模块列表。

  build-depends:       base
                     , MyProject
                     , MyProject.Other

这里 base 是一个包,MyProject 是你的库包的名称(见 cabal 文件中的 name 字段),但 MyProject.Other 不是包裹。实际上包名称中的点是 not allowed:

Cabal package names can use letters, numbers and hyphens, but not spaces.

这就是 cabal 无法解析文件的原因。只需从 build-depends 中删除 , MyProject.Other 行,它应该可以工作。

要将源代码加载到解释器中,请使用 stack ghci