安装本地库

时间:2017-01-08 16:33:07

标签: haskell cabal

如何“安装”本地(即它在我的硬盘上,而不是在互联网上).hs文件在多个程序中使用它?具体来说,如果我编辑库,那些编辑应该可用于所有程序,因此不能将库复制粘贴到每个程序的目录中。

要编译我的程序,我仍然想输入ghc main.hs,而不是文件路径页面。

从上面可能很明显,但我对cabal一无所知。

1 个答案:

答案 0 :(得分:1)

  1. 确保安装了正确的Haskell平台,包括cabal。或者,您可以使用stack,它更现代,在许多方面更好,但IMO cabal对于像您这样的简单项目更实用。
    以下假设您使用{{1在典型的Linux机器上。

  2. 如果尚未完成,请根据具体情况为您的文件提供有意义的分层模块名称。例如,cabalmodule Video.Demuxing.FFMPEG。我们假设您将其称为Data.List.Shuffle.Deterministic。即该文件应以

    开头
    Foo.Bar.Baz
  3. 将文件放在相应的文件夹结构中,即

    1. 如果尚未完成,请创建一个新的项目目录,例如

      module Foo.Bar.Baz where
      ... -- start code
      
    2. 在该项目目录中创建一个子目录mkdir /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar cd /home/Uꜱᴇʀɴᴀᴍᴇ/haskell/foobar ,其中包含一个目录Foo,并将您的文件作为Bar放入其中。

      Baz.hs
  4. 将文件作为新cabal库的一部分。

    mkdir -p Foo/Bar
    cp WʜᴇʀᴇEᴠᴇʀ/Yᴏᴜʀ/Fɪʟᴇ/Wᴀꜱ/Bᴇꜰᴏʀᴇ.hs Foo/Bar/Baz.hs
    

    这会问你几个问题,希望能明白选择什么。在大多数情况下,默认值都没问题,在这种情况下,只需按输入

  5. 如果您还没有,请将所有内容放在版本控制下。 (如果你不知道这是什么,我建议你阅读一些Github教程。你可以跳过这一步,但越早习惯一些VCS,就越好。)

  6. 在本地安装您的项目。

    cabal init
    
  7. 如果一切顺利,你可以在存储在计算机其他地方的Haskell文件中,只需

    cabal install
    

    并拥有您在该项目模块中定义的所有可用内容。编译时无需告诉GHC存储import Foo.Bar.Baz 的位置,此时已经注册了。您也可以在任何地方启动ghci并Foo.Bar.Baz