假设我在haskell中有一个课程项目,这取决于MonadRandom
和hashable
个包。
现在,每当我在另一台计算机上从git克隆它时,我都必须经历一个程序,就像这样:
runhaskell Main.hs
>Could not find module `Control.Monad.Random'
--Google what package Control.Monad.Random is part of... MonadRandom!
cabal install MonadRandom
runhaskell Main.hs
>Could not find module `Data.Hashable'
--Google where Data.Hashable comes from.. ok `hashable`!
cabal install hasahable
runhaskell Main.hs
> HELLO WORLD!
有没有办法简化这个,所以我只运行一个命令?例如,python的pip
使用requirements:
pip install -r requirements.txt
答案 0 :(得分:8)
如果您为项目编写.cabal文件,则可以使用cabal configure
,cabal install --only-dependencies
和cabal build
构建该文件。 (如果你只是想在当前目录中构建它;如果你想将它与所有其他Haskell软件包一起安装,那么过程就像cabal install
一样简单。)
您可以从项目目录中运行cabal init
开始 - 它会向您提出一系列问题,并输出一个不完整的.cabal文件,并为您填写简单的内容。
Cabal是所有Haskell项目的标准构建系统,因此您通常应尽可能早地在项目中编写Cabal文件。
答案 1 :(得分:2)
这是您要使用Cabal的内容。为项目创建.cabal
文件,然后在克隆repo后在项目根目录中运行cabal install
。这将为您提供所有依赖项。
无论如何,所有大型项目都会获得一个用于构建的cabal文件,所以你现在也可以开始使用它。