【问题标题】:What is the common workflow of using cabal for personal project?使用 cabal 进行个人项目的常见工作流程是什么?
【发布时间】:2015-07-09 13:20:40
【问题描述】:

假设我想创建自己的名为 MyLib 的本地库,我的工作流程是:

$ cabal init
# # edit the ".cabal" file, set the "exposed-modules" as "MyLib"
# # edit "MyLib.hs" located in "src"
$ cabal sandbox init
$ cabal install

所以我的问题是

  • 我的工作流程是否可以接受,或者可以更好吗?
  • 现在我在 .cabal-sandbox/lib 中有一个已编译的库,我该如何使用它或我的另一个 haskell 项目中的 import MyLib?看来通过cabal install从hackage下载的包都存放在~/.cabal中,而我自己本地安装的包没有。
  • cabal buildcabal install有什么区别,看来运行cabal build后,我已经可以通过cabal repl运行我的lib了,那么cabal install做了哪些额外的工作呢?

【问题讨论】:

  • #1 我可以接受; #2 cabal install /home/me/mylib
  • @josejuan 是这样的,如果我在cabal sandbox init 之后运行cabal install,软件包将安装到当前目录,而如果没有使用sandbox,它将被安装到.cabal并成为一个全球包?
  • 是的!如果您进入某个沙箱,那么您将安装到该沙箱中,如果没有,则安装到全局 cabal 包中:)(您见过 github.com/commercialhaskell/stack 吗?尽管我还是建议学习 cabal 方式)

标签: haskell cabal


【解决方案1】:

我从来没有用过cabal sandbox,所以我不能说太多。

cabal build 将您的源代码编译到您的dist 目录中。

cabal install 获取您编译的源代码并将其发送到您的~/.cabal 目录,并将其注册到您的~/.ghc 目录中。现在,您可以将 import 它添加到其他代码中,就像您使用 cabal 安装的任何其他库一样。

在我的个人项目中,我使用cabal configurecabal buildcabal replcabal installconfigure 是可选的。

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 2021-04-15
    • 2015-02-05
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多