我正试图将gtk2hs-buildtool
的依赖项添加到我的Haskell项目中,但在构建堆栈时出现了以下错误。
In the dependencies for TicTacToe-0.1.0.0:
gtk2hs-buildtools needed, but the stack configuration has no specified version (latest matching
version is 0.13.5.4)
needed since TicTacToe is a build target.
TicTacToe.cabal文件:
library
exposed-modules:
TicTacToeEngine
other-modules:
Paths_TicTacToe
hs-source-dirs:
src
build-depends:
base >=4.7 && <5,
gtk2hs-buildtools
default-language: Haskell2010
如果使用stack
工具,则不应触摸<packagename>.cabal
文件。CCD_ 4负责从CCD_。尽管修改<packagename>.cabal
是一种常见的做法,但如果不这样做,开发工作流程会更容易。
您感兴趣的文件(以及stack
工具使用的文件(是stack.yaml
和package.yaml
。
在stack.yaml
中,您应该看到一个名为resolver: lts-XX.XX
的条目。这意味着您的依赖关系版本是经过管理的,以便它们与给定的lts
(也称为snapshot
(中的依赖关系匹配。你可以去https://www.stackage.org/,单击您的lts
版本并搜索gtk2hs-buildtools
包以获得适合您项目的版本(例如:lts-12.26
使用gtk2hs-buildtools-0.13.4.0
(。在您的package.yaml
中,在dependencies
部分中写入条目- gtk2hs-buildtools
lts-13.11
及以上版本的gtk2hs-buildtools
在堆叠中不可用,因此您需要将其添加为额外的dep。在stack.yaml
中,在extra-dep
部分中添加以下条目gtk2hs-buildtools-0.13.4.0
(或您想要使用的版本号(。然后添加package.yaml
和条目gtk2hs-buildtools
。有必要在两个文件中都添加条目。请参阅堆栈文档以了解原因。
为了确保你可以构建你的项目,你的文件应该如下所示:
如果使用高于或等于13.11
的解析器
stack.yaml
resolver: lts-13.11
extra-deps:
- gtk2hs-buildtools-0.13.4.0
package.yaml
dependencies:
- base
- gtk2hs-buildtools
如果使用低于13.11
的解析器
stack.yaml
resolver: lts-12.26
extra-deps:
package.yaml
dependencies:
- base
- gtk2hs-buildtools