我怎样才能使用我自己构建的带有堆栈的包?

How can I use my own build of a package with stack?

更大的图景是我正在尝试使用 Stackage (lts 8.1) 中的 sdl2 包。不过,我有点问题;该软件包缺少编译器标志,详见 this issue on GitHub。因此,它无法正确构建。

但是,如果我克隆存储库,我可以将缺少的编译器标志添加到 .cabal 文件并自己构建它,从而解决问题。我现在有一个可用的包。

所以我的问题是:在一个单独的项目中,我如何使用我自己的 sdl2 包工作构建,而不是来自 Stackage 的构建?

使用 Stack 有几种方法可以做到这一点。我最喜欢的一个,听起来很适合你的场景,是用你的 fork 将存储库上传到 GitHub(或你认为合适的任何其他地方),然后添加对在线存储库的引用作为extra-depstack.yamlpackages section。为了便于说明,这里是我的一个项目的 packages 部分,我必须在其中这样做:

packages:
- '.'
- location:
    git: https://github.com/duplode/threepenny-gui
    commit: 7e4e3a41cbb5e55312d4375612790d633ccf1e7a
  extra-dep: true