M.B*_*.B. 2 recursion haskell cabal libraries cabal-install
我有以下问题:
我有两个相互依赖的Haskell库,这两个库都是由cabal管理的.相应的cabal文件如下所示:
图书馆1:
name: Lib1
version: 0.1
cabal-version: >=1.2
build-type: Simple
author: Matthias
library
hs-source-dirs: src
build-depends:
base >= 4,
Lib2
ghc-options: -Wall
exposed-modules: <...>
Run Code Online (Sandbox Code Playgroud)
图书馆2:
name: Lib2
version: 0.1
cabal-version: >=1.2
build-type: Simple
author: Matthias
library
hs-source-dirs: src
build-depends:
base >= 4,
Lib1
ghc-options: -Wall
exposed-modules: <...>
Run Code Online (Sandbox Code Playgroud)
使用cabal install作品安装其中一个库(此处为库2):
Resolving dependencies...
In order, the following will be installed:
Lib2-0.1 (reinstall)
Warning: Note that reinstalls are always dangerous. Continuing anyway...
Configuring Lib2-0.1...
Building Lib2-0.1...
Preprocessing library Lib2-0.1...
Registering Lib2-0.1...
Installing library in
C:\Users\Matthias\AppData\Roaming\cabal\Lib2-0.1\ghc-7.4.2
Registering Lib2-0.1...
Run Code Online (Sandbox Code Playgroud)
但是尝试安装其他库(此处为库1)会cabal install导致依赖性错误:
Resolving dependencies...
cabal.exe: Could not resolve dependencies:
trying: Lib1-0.1 (user goal)
next goal: Lib2 (dependency of Lib1-0.1)
rejecting: Lib2-0.1/installed-aa4... (package is broken)
Run Code Online (Sandbox Code Playgroud)
有没有办法处理两个相互依赖的库,这样我就不会出现依赖性错误,或者只是无法正确处理这种情况?
正如其他人所说,循环依赖永远不会在Cabal中起作用.编译具有循环依赖关系的模块是很困难的,但是包是一个无望的原因.
有时候它可能很烦人,但唯一真正的解决方案是找到一种方法来以某种方式打破循环依赖.