如何使用堆栈安装本地创作的Haskell模块以供全局使用?

问题描述 投票:1回答:1

我有一个本地创作的Haskell项目,它产生两个:

  1. 二进制可执行文件,和
  2. 几个新的Haskell模块,我想让我的其他基于Haskell的可执行文件可以访问它们。

后:

stack build
stack install

我发现了:

  1. 二进制可执行文件(上面的#1)从任何目录运行都很好。
  2. 但是,新的Haskell模块(上面的#2)只有在我从项目目录中运行时才能找到! (也就是说,对于上面#1以外的任何可执行文件。)

我需要能够从任何地方找到新模块。我怎样才能做到这一点?

haskell cabal haskell-stack cabal-install stackage
1个回答
1
投票

每个堆栈项目都在自己的沙箱中,因此编译的模块只能在该项目中使用。编译的依赖项(来自堆栈快照)有时会在项目之间共享。

请注意,您可以在包列表中列出相对路径,并指向此包。它将再次构建,但它可以通过这种方式直接用于另一个项目。为什么要额外建设? Stack具有与cabal-install不同的项目模型 - 它不允许包DB的突变影响其他项目的构建方式。

共享这样一个包的一个选择是将它放在git repo中并使用https://docs.haskellstack.org/en/stable/custom_snapshot/,但这些东西仍然有点新。

© www.soinside.com 2019 - 2024. All rights reserved.