为什么cabal配置?

时间:2017-07-25 12:59:59

标签: haskell cabal

Cabal User Guide中,它说Cabal经常与autoconf和automake进行比较,因为实际配置和构建包的命令行界面遵循相同的步骤:

./configure --prefix=...
make
make install

相比
cabal configure --prefix=...
cabal build
cabal install

我的理解是./configure使用配置文件(由autoconf生成)来使make进程适应它将运行的环境,并检查依赖性。所以./configure因此总是有一个“输入”来符合。但是如果cabal configure没有给出任何参数它会做什么,为什么在运行cabal build之前有必要?

1 个答案:

答案 0 :(得分:2)

cabal configure步骤至少做了两件我知道的事情:

  • 检查包描述是否正常解析。
  • 检查是否已安装所有必需的依赖项(如果没有,则报告错误)。

基本上,它运行约束求解器来确定您要构建哪些软件包。 (例如,如果您安装了多个版本的ByteString,您将使用哪个版本?那么它可能取决于您所依赖的软件包所期望的版本......)

此外,我相信可以在配置时提供选项,这些选项可以准确地改变包的哪些功能(但我没有经验)。

我认为您原来 之前要调用configure才能调用build,但我相信现在cabal命令行工具会执行该步骤在许多情况下你自动。 (例如,cabal run现在似乎会自动重新配置包描述文件是否比配置数据库更新。)