如何将库从一个 cabal 包导入到另一个

How to import a lib from one cabal package to another

所以我的文件夹结构是这样的

.
├── eulerlibs
│  ├── EulerLibs
│  └── eulerlibs.cabal
├── flake.lock
├── flake.nix
├── p001
│  ├── Main.hs
│  └── p001.cabal
├── p002
│  ├── Main.hs
│  └── p002.cabal
├── p003
│  ├── Main.hs
│  └── p003.cabal
├── p004
│  ├── Main.hs
│  └── p004.cabal
├── p005
│  ├── Main.hs
│  └── p005.cabal

我想做的是将 ./eulerlibs(库)cabal 目录中的库模块导入到 ./p005(可执行)cabal 目录
我知道我可以包含内置库 (*.so),但找不到链接两个 cabal 项目的方法
我对 cabal 和 haskell 都很陌生,因此非常感谢您提供一些见解。如果没有任何效果,我将不得不将该库添加到 p005 本身,我真的很想避免。

您可以使用 cabal.project 文件执行此操作。将其放在顶层(在 . 目录中),内容如下:

packages: */*.cabal

然后你们将能够在构建依赖项中使用彼此的 cabal 文件中的所有这些库,例如在 p001.cabal:

...

library
  ...
  build-depends: base, eulerlibs
  ...

...

这里是 cabal.project 个文件的完整文档:https://cabal.readthedocs.io/en/latest/cabal-project.html