将cabal用于个人项目的常见工作流程是什么?

时间:2015-07-09 13:20:41

标签: haskell cabal

假设我想创建一个名为 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?从hackage通过cabal install下载的软件包似乎存储在〜/ .cabal 中,而我自己的本地安装软件包则不存在。
  • cabal buildcabal install之间有什么区别,似乎在运行cabal build之后,我已经可以通过cabal repl运行我的lib了,那么额外的工作是什么{ {1}}做什么?

1 个答案:

答案 0 :(得分:2)

我从未使用cabal sandbox所以我不能说很多话。

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

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

在我的个人项目中,我使用cabal buildcabal replcabal installconfigureif ($_POST['submit']=="Log In") { $query = "SELECT * FROM user WHERE email='".mysqli_real_escape_string($link, $email)."' AND password='$md5' LIMIT 1"; $result = mysqli_query($link, $query); $row = mysqli_fetch_array($result); print_r($row); } 是可选的。