24

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

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

cabal: At least the following dependencies are missing:
bson-docmap >=0.0

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

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

4

3 回答 3

22

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

cabal sandbox add-source path/to/project/dir

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

于 2013-10-27T20:12:12.417 回答
9

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

packages:
  common/
  backend/
  frontend/

然后运行$ cabal new-build all

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

于 2018-03-21T23:23:44.163 回答
1

在您的cabal.project文件中添加一个新部分:

source-repository-package
  type: git
  -- Normally this is a git URL, but a local path works too (but I think it must be absolute?):
  location: /path/to/your/local/bson-docmap
  -- Replace this with the commit you want to check out:
  tag: e1a47b8802d12cd221eead508c5b4d9ccd65feb4

[请注意,这source-repository-package是一个关键字,而不是您所指的包的名称。]

于 2022-01-08T21:27:52.327 回答