如何使用nix栈构建wxHaskell项目?

时间:2016-09-17 19:48:28

标签: haskell wxwidgets haskell-stack nix wxhaskell

我正在尝试使用Nix和Stack为wxHaskell建立一个构建环境。

我已经通过nix安装了wxWidgets-3.0.2。这是.cabal文件的相关部分

def whereIsItS(letter, word):
    try:
        return word.index(letter)
    except ValueError:
        print("letter not in string")

和stack.yaml文件

executable hellowx-exe
hs-source-dirs:     app
main-is:            Main.hs
ghc-options:        -threaded -rtsopts -with-rtsopts=-N
build-depends:      base
                  , hellowx
                  , wx
                  , wxc
                  , wxcore
                  , wxdirect

我尝试添加

resolver: lts-5.0
extra-deps: 
- wx-0.92.2.0
- wxc-0.92.2.0
- wxcore-0.92.2.0
- wxdirect-0.92.2.0

但这显然不是正确的方式。

所以我摆脱了.yaml文件中的nix部分并尝试了导致失败的命令nix: enable: true packages: [wxwidgets] 。日志文件说

$ stack --nix build

但是我确实通过nix安装了wx-config和wxwidgets。构建过程由于某种原因无法找到它。如何设置此构建环境?有没有办法指导构建过程查看包含wx-config的目录?我无法弄清楚为什么它无法找到它。它在PATH。

1 个答案:

答案 0 :(得分:1)

好的,我明白了。我添加了错误的“属性名称”。这是正确的stack.yaml文件

# at this point in time nix supports lts-5.0
resolver: lts-5.0

packages:
-'.'

extra-deps: 
- wx-0.92.2.0
- wxc-0.92.2.0
- wxcore-0.92.2.0
- wxdirect-0.92.2.0

# wxwidgets-3.0.2 has the attribute name wxGTK30
# you also need zlib, mesa_noglu and x11

nix:
  enable: true
  packages: [zlib, wxGTK30, mesa_noglu, x11]

这似乎正确地构建了一切,我能够从这里建立一个最小的窗口(minimal.hs