在使用堆栈的Haskell项目中使用gtk2hs-buildtool库时出现错误

问题描述 投票:0回答:1

我正在尝试将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
haskell haskell-stack
1个回答
0
投票

如果使用stack工具,则不要触摸<packagename>.cabal文件。 stack负责从package.yaml生成它。尽管事实是修改<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.yamldependencies部分中,输入条目- gtk2hs-buildtools

lts-13.11起以及在gtk2hs-buildtools以上都不能堆叠使用,因此您需要将其添加为额外部门。在stack.yamlextra-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-13.11
extra-deps:

package.yaml

dependencies:
 - base
 - gtk2hs-buildtools
© www.soinside.com 2019 - 2024. All rights reserved.