我在 Windows 8.1 x64 下使用 Eclipse (Kepler Service Release 2) + EclipseFP (2.6.0) + Haskell Platform。在安装了一些 cabal 之后,EclipseFP 停止工作并向我展示:
程序 ghc 版本 >=6.4 是必需的,但找不到。
我有:
- 已卸载的 Haskell 平台
- 已删除 C:\Users\myuser\AppData\Roaming\cabal*
- 已删除 C:\Program Files (x86)\Haskell*
- 安装 Haskell 平台 2013.2
- 使用我的 Haskell 工作区运行 Eclipse
- 尝试构建我的项目
- 它给了我这个关于 ghc 的错误并且无法构建它。
EclipseFP 配置找到了所有 Haskell Helper 可执行文件。它已经找到了 Cabal 1.16.0.2 和 GHC 7.6.3。从命令行 GHC 和 cabal 被发现并且正在工作。“cabal build”也正在从命令行处理该项目。
这条消息几乎什么都没说!如果我能看到它正在搜索 GHC 的路径或者它从哪里获得这条路径......
编辑:来自 buildwrapper 的消息:
"C:\Users\home\AppData\Roaming\cabal\bin\buildwrapper.exe 同步 --force=false --tempfolder=.dist-buildwrapper --cabalpath=C:\Program Files (x86)\Haskell Platform\2013.2 .0.0\lib\extralibs\bin\cabal.exe --cabalfile=D:\Project\haskell2\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true
配置因为 setup_config 不存在
"C:\Program Files (x86 )\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "- -builddir=D:\Project\haskell2\SomeGL.dist-buildwrapper\dist" cabal.exe:程序 ghc 版本 >=6.4 是必需的,但找不到。"
从 cmd.exe 调用最后一行(作为普通的非管理员用户)一切正常:
"C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "--builddir=D:\Project\haskell2\SomeGL\.dist-buildwrapper\dist"
编辑:为了找到使用的潜在路径环境,我尝试在 Eclipse 中运行 GHCi 控制台并尝试:
import System.Environment
x <- getEnvironment
filter (\ (a,_) -> a == "Path") x
并得到了一些开头的东西:
[("路径","C:\Program Files (x86)\Haskell\bin;C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin;C:\Program Files (x86) \Haskell 平台\2013.2.0.0\bin;...")]
第一个文件夹无效,但 Haskell 平台有效且正常工作。我发现的另一件事。有一次我运行“Build All”命令,在 Eclipse 中使用 GHC 运行 Process,路径是:
运行可执行文件 C:\Program Files (x86)\Haskell Platform\2013.2.0.0\bin\ghc.exe
我去看了这个过程的详细信息,它是由当前运行 Eclipse 的同一用户运行的。路径是正确的,但我仍然得到错误:
程序 ghc 版本 >=6.4 是必需的,但找不到。
从命令行运行仍然可以正常工作。该程序有错误,但我只在命令行中看到它们。
有人可以帮助找到这个问题吗?
编辑:我发现了一些有趣的问题。运行“Build All”命令正在执行此命令:
C:\Users\myuser\AppData\Roaming\cabal\bin\buildwrapper.exe 同步 --force=false --tempfolder=.dist-buildwrapper --cabalpath=C:\Program Files (x86)\Haskell Platform\2013.2。 0.0\lib\extralibs\bin\cabal.exe --cabalfile=D:\haskell\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true
从命令行运行会出错。问题是cabalpath 周围没有引号,因为它有空格。当我从命令行以这种方式运行它时,它可以工作:
C:\Users\myuser\AppData\Roaming\cabal\bin\buildwrapper.exe synchronize --force=false --tempfolder=.dist-buildwrapper --cabalpath="C:\Program Files (x86)\Haskell Platform\2013.2.0.0\lib\extralibs\bin\cabal.exe" --cabalfile=D:\haskell\SomeGL\SomeGL.cabal --cabalflags= --logcabal=true
我认为所有“--cabalfile”参数都应该有引号,因为路径中可能有空格。我仍然不知道这是否是 Eclipse 下的问题。