簡體   English   中英

如何在使用堆棧時找到.cabal中的依賴項

[英]How to find the dependencies in .cabal when using stack

這些天我正在學習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存儲庫(fe http://hackage.haskell.org/packages/search?terms=GLUtil )中,您可以使用它們堆棧,在stack.yaml配置文件中添加extra-deps部分:

resolver: lts-13.0
extra-deps:
  - FTGL-2.1
  - GLUtil-0.10.3
  - OpenGLRaw-2.3.0.0

我沒有測試構建,也許它可能失敗導致依賴性不兼容。

我已經嘗試構建包,上面的配置不起作用。 實際的cabal文件沒有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能夠使用原始約束構建包,而不進一步配置(盡管它選擇了不同版本的庫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM