Cabal 安装 Wx mac-os 失败

Cabal install Wx for mac-os failure

我正在与 Haskell 图书馆建立 love/hate 关系。无论如何,我真的很想深入学习 Haskell,但是大多数时候图书馆都在试图阻止我(或者鼓励我自己写,但我还没有完全做到)。想尝试 UI 的 Wx。 Cabal 开始时一切都很愉快,但以来自地狱的消息结束。至少我觉得是。

Downloading the latest package list from hackage.haskell.org
clang: warning: argument unused during compilation: '-nopie' [-Wunused-command-line-argument]
Resolving dependencies...
Downloading fgl-5.7.0.1...
Downloading old-locale-1.0.0.7...
Configuring old-locale-1.0.0.7...
Downloading stm-2.5.0.0...
Configuring fgl-5.7.0.1...
Configuring stm-2.5.0.0...
Building old-locale-1.0.0.7...
Building fgl-5.7.0.1...
Building stm-2.5.0.0...
Installed old-locale-1.0.0.7
Downloading old-time-1.1.0.3...
Configuring old-time-1.1.0.3...
Building old-time-1.1.0.3...
Installed stm-2.5.0.0
Installed old-time-1.1.0.3
Downloading wxcore-0.11.1.2...
Configuring wxcore-0.11.1.2...
Failed to install wxcore-0.11.1.2
Build log ( /Users/administrator/.cabal/logs/ghc-8.4.3/wxcore-0.11.1.2-7WkQ04B76zVGNKKljmrN1g.log ):
cabal: Entering directory '/var/folders/81/50s00bl11pv7fn8dw4n0w03m0000gn/T/cabal-tmp-1098/wxcore-0.11.1.2'
error: Unknown option "--sysconfdir=/Users/administrator/Library/Haskell/etc". Use "--help" to show valid options.

cabal: Leaving directory '/var/folders/81/50s00bl11pv7fn8dw4n0w03m0000gn/T/cabal-tmp-1098/wxcore-0.11.1.2'
Installed fgl-5.7.0.1
Updating documentation index
/Users/administrator/Library/Haskell/share/doc/x86_64-osx-ghc-8.4.3/index.html
cabal: Error: some packages failed to install:
wx-0.11.1.2-3RIijI82LEqAoB6cQuvIlr depends on wx-0.11.1.2 which failed to
install.
wxcore-0.11.1.2-7WkQ04B76zVGNKKljmrN1g failed during the configure step. The
exception was:
ExitFailure 2

有什么建议吗?请不要说 'use Gtk' 因为那更糟。如果有人可以帮助我,那就太好了。虽然航站楼是一个安全的居住地,但我最终还是想冲出它去探索这个世界。 "Hello world!"

Haskell 源于不同研究人员群体的需求,他们需要通用的函数式语言定义和实现。许多研究人员积极参与编程语言理论和函数式编程理论,因此他们将扩展或重新定义语言以满足他们的需要。该生态系统拥有一组多样化的库,其中许多未开发到专业维护软件的水平。

话虽如此,随着 Haskell 开始被大公司接受,提供一种语言和一组协同工作的库将成为现实的巨大推动力。

我见过的最齐心协力的是Haskell Stack。他们从 stack 工具开始,这是一个包管理器和构建工具;它使用 cabal 进行下载和安装,(通常)使用 ghc 进行编译,以及您计算机上的任何构建工具。 Stack 使用 lts(我认为是长期支持)配置文件,该配置文件标识一组已知可以相互协作的软件包版本。您可以告诉 stack 为您的项目使用特定的 lts 配置文件,它会将其保留为构建配置文件的一部分,即使您添加了特定的包。

根据您的构建输出,您正在尝试使用来自 hackage.haskell.org 的最新软件包。每个包都在自己的时间范围内更新,与任何其他包完全分开。堆栈方法是识别一起工作的包,这通常意味着可能需要旧版本的编译器。

据我所知,最新的Wx Haskell在Mac OS X上不起作用。可能有一个stack lts配置文件可以用来获取Wx Haskell 致力于 Mac OS X.

您的安装正在选择一个非常旧版本的 wxcore (0.11),原因我不知道。

你有更多关于 hackage 的现代版本,还有 github 仓库: https://github.com/wxHaskell/wxHaskell/

github的版本是最新的(0.93),在大多数情况下效果很好,但是你需要在wxcore中更改darwin的cc标志:

-      cc-options: "-stdlib=libstdc++"
+      cc-options: "-stdlib=libc++"

(我已向邮件列表发送了一封电子邮件以记录此更改,并要求更新有关 hackage 的版本。)

否则,我可以确认 wxHaskell 在新的 mac 上可以正常编译并且可以工作。