簡體   English   中英

如何使用堆棧與 nix 構建 wxHaskell 項目?

[英]How to use stack with nix to build wxHaskell project?

我正在嘗試使用 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 的目錄中查找? 我不明白為什么它找不到它。 它在路徑中。

好的,我想通了。 我添加了錯誤的“屬性名稱”。 這是正確的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM