EclipseFP正在寻找GHC并找不到它
我在Windows 8.1 x64下运行Eclipse(Kepler Service Release 2)+ EclipseFP(2.6.0)+ Haskell Platform。 在安装一些cabal之后的一会儿,EclipseFP停止工作并向我展示:
该程序ghc版本> = 6.4是必需的,但无法找到。
我有:
EclipseFP配置发现所有Haskell助手可执行文件。 它已经发现了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-benchmarks“”--builddir = D: Project haskell2 SomeGL.dist-buildwrapper dist“cabal.exe:程序ghc版本> = 6.4是必需的,但它无法找到。”
正确调用cmd.exe的最后一行(与普通的非管理用户一样),一切工作正常:
"C:Program Files (x86)Haskell Platform2013.2.0.0libextralibsbincabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "--builddir=D:Projecthaskell2SomeGL.dist-buildwrapperdist"
编辑:找到使用的潜在路径environement我试图在Eclipse内部运行GHCi控制台,并尝试:
import System.Environment
x <- getEnvironment
filter ( (a,_) -> a == "Path") x
并得到了一些开始:
C: Program Files(x86) Haskell Platform 2013.2.0.0 lib extralibs bin; C: Program Files(x86) Haskell Platform 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 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
从命令行运行会导致错误。 问题是cabalpath周围没有引号,因为它里面有空格。 当我从命令行以这种方式运行时,它可以工作:
C:UsersmyuserAppDataRoamingcabalbinbuildwrapper.exe synchronize --force=false --tempfolder=.dist-buildwrapper --cabalpath="C:Program Files (x86)Haskell Platform2013.2.0.0libextralibsbincabal.exe" --cabalfile=D:haskellSomeGLSomeGL.cabal --cabalflags= --logcabal=true
我认为所有“--cabalfile”参数都应该有引号,因为路径中可能有空格。 我仍然不知道这是Eclipse下的问题。
我发现了问题!
它是EclipseFP 2.6.0使用大写“PATH”变量,但是我的Windows 8.1使用“Path”并且在编程上某种类型,当执行BuildWrapper和Cabal时可能有两个有效的变量“PATH”和“Path”。 所以有些东西搞乱了。
解决此问题的方法是如果您从控制面板|重命名 系统| 用户和系统从“路径”到“路径”的环境变量。
我希望这可以在EclipseFP中修复,以便在任何情况下在将来的工作。
建立你的项目意味着在幕后,组建项目启动。 如果您在Haskell帮助程序可执行文件首选项页面中激活调试模式(显示BuildWrapper响应),您应该看到正在发送的确切的cabal build命令。 这可能是Eclipse中使用的路径与命令行中使用的路径不同,请检查您的eclipse快捷方式。 EclipseFP可以找到可执行文件,因为它也可以在Windows上的一些众所周知的文件夹中搜索。 你也可以从github上获取EclipseFP的当前开发版本。 它现在应该传递--with-ghc到cabal调用,以确保在Eclipse中检测到的路径是使用的路径。
链接地址: http://www.djcxy.com/p/43403.html上一篇: EclipseFP is searching for GHC and cannot find it
下一篇: Why i can't compile with GHC if code contain module definition?