2

OcamlbuildモードでOcaIDE使用しているときに問題が発生しました。自分のJoCamlソースをコンパイルしようとしています。JoCamlのマニュアル(ページの下部)によると、 JoCamlでocamlbuildを使用するには、ocamlbuildに-use-jocaml引数を追加するだけです。確かに、私が自分のプロジェクトのルートに行き、

ocamlbuild -use-jocaml foo.native

それは私の実行可能ファイルをうまく生成します。

しかし、OcaIDEでは

/bin/sh: jocamldep: command not found

OcaIDEでは、-use-jocamlフラグは(プロジェクトのプロパティの)[その他のフラグ]ボックスに渡されます。そして、それは確かに機能しています。苦情は、jocamlのものが見つからないということです。不可解なのは、jocamlがインストールされており、任意のランダムなターミナルウィンドウからアクセスできることです。たとえば、実行中

jocamldep -modules foo.ml > foo.ml.depends

私のプロジェクトでは、目的の依存関係ファイルが生成されます。

したがって、OcaIDEを構成して、JoCaml実行可能ファイルがどこにあるかなどを伝える必要があるように思われます。これは、たとえばOCamlに対して行われます。しかし、JoCamlのためにそれを行う場所はありません。そして、jocamldep / jocamlc / etcがすべてどこからでもアクセス可能である場合、OcaIDEがそれらを選択できないのは本当に奇妙です。

何か案は?

(ocamlbuildプラグインを実行して、「myocamlbuild.ml」ファイルでフラグを渡すことができることを認識しています。ocamlbuildプラグインに慣れたら、おそらく後の段階で使用します。しかし、ここでの質問はOcaIDEに関するものです。編集:実際、ocamlbuildプラグインは解決策ではないようです。ocamlbuildには-use-jocamljocamlの使用を強制するオプションがありますが(正常に動作します)、プラグインシステムはそれをサポートしていません。つまり、use_jocaml(またはjocamlに関連するもの)はオプションのリストにはありません。)

4

1 に答える 1

2

ocamlbuildプロジェクトでビルドを開始すると、OcaIDEは次のように呼び出します。

ocaml.exec.ExecHelper#execMerge

を作成しnew java.lang.ProcessBuilder、デフォルトの環境(ProcessBuilder#environment())を使用します。

問題のデバッグに役立てるために、Eclipseで次のJavaプログラムを実行してください。

public static void main(String[] args) {
    Map<String, String> environment = new ProcessBuilder().environment();
    for (Entry<String, String> entry : environment.entrySet()) {
        if ("path".equalsIgnoreCase(entry.getKey())) {
            System.out.println("PATH = " + entry.getValue());
        }
    }
}

OcamlBuildに渡されるのと同じパスが表示されます。

また、ワークスペースにOcaIDEプラグインソースをインポートし、それをデバッグモードで実行し、ブレークポイントを使用して、ocaml.exec.ExecHelper#execMergeocamlbuildがどのように呼び出されるかを確認することもできます。


正しいパスでEclipseを起動するためのシェルスクリプトを作成してみることができます。

startEclipse.sh(eclipse実行可能ファイルと同じフォルダーにあります)のようなもの:

#!/bin/bash
export PATH=<your path to JoCaml>:$PATH
./eclipse
于 2011-03-16T21:33:54.267 に答える