取决于cabal中的本地包装

msk*_*kel 21 haskell cabal

我写了一些包含一些额外函数的包,用于处理反映我喜欢使用它们的方式的常见类型(例如,我更喜欢将Bson文档视为地图而不是字段列表).我将这些包保存在本地源目录中,而不是Hackage上.

我想.cabal使用cabal的build-depends系统在它们的文件中引入这些包之间的依赖关系.但这会导致以下错误(bson-docmap作为本地模块):

cabal: At least the following dependencies are missing:
bson-docmap >=0.0
Run Code Online (Sandbox Code Playgroud)

是否可以将cabal指向本地目录作为备用存储库?

我目前的解决方法是将所有模块保存在一个本地包中,但如果可能的话,我宁愿将它们分开.

J. *_*son 22

如果您使用的是Cabal沙箱,则可以添加本地Cabalized目录作为源

cabal sandbox add-source path/to/project/dir
Run Code Online (Sandbox Code Playgroud)

在此之后它将可用build-depends.

  • 如果我不是怎么办? (2认同)

Wiz*_*zek 7

您可以创建一个./cabal.project包含以下内容的文件:

packages:
  common/
  backend/
  frontend/
Run Code Online (Sandbox Code Playgroud)

然后运行 $ cabal new-build all

一个例子可以在这里看到:https : //github.com/ElvishJerricco/reflex-project-skeleton/blob/11c1feb/cabal.project