2

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 プラットフォーム 2013.2 をインストールします。
  5. Haskell ワークスペースで Eclipse を実行する
  6. 私のプロジェクトをビルドしてみてください
  7. 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 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 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 Platform\2013.2.0.0\bin;...")]

最初のフォルダーは無効ですが、Haskell プラットフォームは有効で機能しています。私が見つけたもう一つのこと。「Build All」コマンドを実行したときに、GHC を使用して Eclipse で 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:\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 での問題かどうかはまだわかりません。

4

2 に答える 2

1

問題が見つかりました!

EclipseFP 2.6.0 は大文字の "PATH" 変数を使用していますが、私の Windows 8.1 は "Path" を使用しており、BuildWrapper と Cabal を実行するときに、プログラム的に何らかの有効な 2 つの変数 "PATH" と "Path" を持つことができます。だから何かがめちゃくちゃです。

この問題の回避策は、コントロール パネルから名前を変更する場合です。システム | システム | 「Path」から「PATH」までのユーザーとシステムの両方の環境変数。

これが EclipseFP で修正されることを願っています。

于 2014-06-22T15:41:10.430 に答える
0

プロジェクトをビルドするということは、舞台裏でカバールビルドが開始されることを意味します。Haskell ヘルパーの実行可能設定ページ (BuildWrapper の応答を表示) でデバッグ モードを有効にすると、送信されている正確な cabal ビルド コマンドが表示されます。Eclipse で使用されているパスがコマンド ラインで使用されているパスと異なる可能性があります。Eclipse のショートカットを確認してください。EclipseFP は、Windows 上のいくつかのよく知られたフォルダーも検索するため、実行可能ファイルを見つけることができます。また、github から EclipseFP の現在の開発バージョンを取得することもできます。--with-ghc を cabal 呼び出しに渡して、Eclipse で検出されたパスが使用されていることを確認する必要があります。

于 2014-06-18T09:59:55.903 に答える