使用Stack在Haskell项目中使用gtk2hs构建工具库时出错



我正试图将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.yamlpackage.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

最新更新