这些天我正在学习 Haskell。我在 Github 上有一个有趣的项目:https://github.com/tmishima/Hinecraft 我克隆它,我想自己构建它并运行它。但我遇到了这样的堆栈构建问题
Resolver 'lts-13.0' does not have all the packages to match your requirements.
FTGL not found
- Hinecraft requires -any
GLUtil not found
- Hinecraft requires -any
OpenGLRaw version 3.3.1.0 found
- Hinecraft requires <=2.3.0.0
堆栈中似乎找不到这些依赖项,现在该怎么办?我应该手动下载这些依赖项并在本地构建它们吗? 感谢您的帮助。
.cabal 依赖项代码
build-depends:
base , GLFW-b , OpenGL , mtl
, bytestring , array , vector , directory
, process , OpenGLRaw <= 2.3.0.0 , cereal , FTGL
, time , containers , GLUtil , linear , text
, sqlite-simple
最佳答案
这些依赖项不包含在堆栈的包集中(您可以在 https://www.stackage.org/lts-13.0 中检查它)。
但是,它们位于 hackage 存储库中(例如 http://hackage.haskell.org/packages/search?terms=GLUtil ),您可以使用它们创建堆栈,添加 extra-deps
stack.yaml
中的部分配置文件:
resolver: lts-13.0
extra-deps:
- FTGL-2.1
- GLUtil-0.10.3
- OpenGLRaw-2.3.0.0
我尚未测试构建,也许它可能会因依赖项不兼容而失败。
我尝试构建包,但上述配置不起作用。 actual cabal file没有OpenGLRaw <= 2.3.0.0
约束,也许您出于某种原因添加了约束?
如果不是这样,您可以尝试构建它,从 cabal 文件中删除约束,并使用此 stack.yaml
,使用默认值 OpenGLRaw-3.3.1.0
:
resolver: lts-13.0
extra-deps:
- FTGL-2.1
- GLUtil-0.10.3
由于该软件包需要旧版本的 OpenGLRaw
(2.3.0.0),我已经成功定义了一个使用该版本的配置文件,使用 lts-6.35
:
resolver: lts-6.35
extra-deps:
- FTGL-2.1
- GLURaw-1.4.0.2
- GLUtil-0.8.8
- hpp-0.3.1.0
- OpenGL-2.13.0.0
- OpenGLRaw-2.3.0.0
希望对你有帮助!
作为旁注,我必须提到 cabal
能够使用原始约束构建包,无需进一步配置(尽管它选择了不同版本的库)。
关于haskell - 使用堆栈时如何查找.cabal中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53954519/