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

nat*_*tto 1 haskell cabal cabal-install cabal-new

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

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 eulerlibs\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 EulerLibs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 eulerlibs.cabal\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flake.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 flake.nix\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 p001\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Main.hs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 p001.cabal\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 p002\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Main.hs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 p002.cabal\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 p003\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Main.hs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 p003.cabal\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 p004\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Main.hs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 p004.cabal\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 p005\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Main.hs\n\xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 p005.cabal\n
Run Code Online (Sandbox Code Playgroud)\n

我想做的是将./eulerlibs(库)cabal 目录中的库模块导入到./p005(可执行)cabal 目录
\n我确实明白我可以包含构建的库(*.so),但找不到链接两个库的方法cabal 项目
\n我对 cabal 和 haskell 都很陌生,所以一些见解将不胜感激。如果没有任何效果,我将不得不将库添加到 p005 本身,这是我真正想避免的。

\n

Nou*_*are 5

您可以使用cabal.project文件来完成此操作。将其放在顶层(在.目录中)并包含以下内容:

packages: */*.cabal
Run Code Online (Sandbox Code Playgroud)

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

...

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

...
Run Code Online (Sandbox Code Playgroud)

cabal.project以下是文件的完整文档: https://cabal.readthedocs.io/en/latest/cabal-project.html