我正在尝试将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
文件。 stack
负责从package.yaml
生成它。尽管事实是修改<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
以上都不能堆叠使用,因此您需要将其添加为额外部门。在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-13.11 extra-deps:
package.yaml
dependencies: - base - gtk2hs-buildtools