2

我正在尝试使用 Nix 和 Stack 为 wxHaskell 设置构建环境。

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

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

和 stack.yaml 文件

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

我尝试添加

nix:
  enable: true
  packages: [wxwidgets]

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

所以我去掉了 .yaml 文件中的 nix 部分并尝试了$ stack --nix build导致失败的命令。日志文件说

[1 of 1] Compiling Main             ( /run/user/1000/stack8847/wxc-0.92.2.0/Setup.hs, /run/user/1000/stack8847/wxc-0.92.2.0/.stack-work/dist/x86_64-linux-nix/Cabal-1.22.5.0/setup/Main.o )
Linking /run/user/1000/stack8847/wxc-0.92.2.0/.stack-work/dist/x86_64-linux-nix/Cabal-1.22.5.0/setup/setup ...
Error: wx-config not found, please install wx-config before installing wxc

但是我确实通过 nix 安装了 wx-config 和 wxwidgets。由于某种原因,构建过程找不到它。我可以做些什么来设置这个构建环境?有没有办法指导构建过程查看包含 wx-config 的目录?我不知道为什么它找不到它。它在PATH中。

4

1 回答 1

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]

这似乎可以正确构建所有内容,并且我能够从这里构建一个最小的窗口(minimum.hs

于 2016-09-18T16:54:15.553 回答