使用Stack在Haskell项目中使用gtk2hs-buildtool库时出错

我试图将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
wjqact 回答:使用Stack在Haskell项目中使用gtk2hs-buildtool库时出错

如果您使用的是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使用{{1} }。在您的gtk2hs-buildtools-0.13.4.0的{​​{1}}部分中,输入条目package.yaml

dependencies- gtk2hs-buildtools以上的位置无法堆叠,因此您需要将其添加为额外的深度。在lts-13.11的{​​{1}}部分中,添加以下条目gtk2hs-buildtools(或您要使用的版本号)。然后添加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
本文链接:https://www.f2er.com/3167716.html

大家都在问