在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
之前有必要?
答案 0 :(得分:2)
cabal configure
步骤至少做了两件我知道的事情:
基本上,它运行约束求解器来确定您要构建哪些软件包。 (例如,如果您安装了多个版本的ByteString
,您将使用哪个版本?那么它可能取决于您所依赖的软件包所期望的版本......)
此外,我相信可以在配置时提供选项,这些选项可以准确地改变包的哪些功能(但我没有经验)。
我认为您原来 之前要调用configure
才能调用build
,但我相信现在cabal
命令行工具会执行该步骤在许多情况下你自动。 (例如,cabal run
现在似乎会自动重新配置包描述文件是否比配置数据库更新。)