EclipseFP正在搜索GHC,但无法找到它

时间:2014-06-17 21:39:17

标签: haskell ghc haskell-platform eclipse-fp

我在Windows 8.1 x64下使用Eclipse(Kepler Service Release 2)+ EclipseFP(2.6.0)+ Haskell Platform。 在安装了一些cabal之后的一刻,EclipseFP停止工作并向我展示:

  

程序ghc版本> = 6.4是必需的但无法找到。

我有:

  1. 卸载Haskell平台
  2. 已删除C:\ Users \ myuser \ AppData \ Roaming \ cabal *
  3. 已删除C:\ Program Files(x86)\ Haskell *
  4. 安装Haskell Platform 2013.2
  5. 使用我的Haskell工作区运行Eclipse
  6. 尝试构建我的项目
  7. 它给了我关于ghc的错误,无法构建它。
  8. 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 synchronize --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-benchmarkmarks“” - 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
    

    并得到一些开头的东西:

      

    [(“Path”,“C:\ Program Files(x86)\ Haskell \ bin; C:\ Program Files   (x86)\ Haskell Platform \ 2013.2.0.0 \ lib \ extralibs \ bin; C:\ Program   文件(x86)\ Haskell Platform \ 2013.2.0.0 \ bin; ...“)]

    第一个文件夹无效,但Haskell平台有效且有效。 我找到的另一件事。有一次,我运行了“Build All”命令,在Eclipse中使用GHC运行Process,路径为:

      

    运行可执行文件C:\ Program Files(x86)\ Haskell   平台\ 2013.2.0.0 \ BIN \ ghc.exe

    我去看了这个进程的详细信息,它是从当前运行Eclipse的同一个用户运行的。路径是正确的,但我仍然得到错误:

      

    程序ghc版本&gt; = 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下的问题。

2 个答案:

答案 0 :(得分:1)

我发现了问题!

EclipseFP 2.6.0使用大写的“PATH”变量,但是我的Windows 8.1使用“Path”并以编程方式在执行BuildWrapper时有可能有两个变量“PATH”和“Path”。阴谋。所以有些东西搞乱了。

此问题的解决方法是从控制面板重命名系统|用户和系统的环境变量,从“路径”到“路径”。

我希望这可以在EclipseFP中修复,以便将来可以在任何情况下工作。

答案 1 :(得分:0)

构建项目意味着在幕后启动cabal构建。如果在Haskell帮助程序可执行首选项页面中显示调试模式(显示BuildWrapper响应),您应该会看到发送的确切cabal构建命令。可能是Eclipse中使用的路径与命令行中使用的路径不同,请检查eclipse快捷方式。 EclipseFP可以找到可执行文件,因为它也可以在Windows上的一些众所周知的文件夹中搜索。 您还可以从github获取EclipseFP的当前开发版本。它现在应该将--with-ghc传递给cabal调用,以确保在Eclipse中检测到的路径是使用的路径。