2 Stimmen

OcaIDE sieht die JoCaml-Werkzeuge nicht

Ich habe ein Problem bei der Verwendung von OcaIDE im Modus ocamlbuild. Ich versuche, mein eigenes Programm zu kompilieren. JoCaml Quellen. Nach Angaben der JoCaml-Handbuch (unten auf der Seite), um ocamlbuild mit JoCaml zu verwenden, muss ich nur die -use-jocaml Argument für ocamlbuild. In der Tat, wenn ich zum Stamm meines Projekts gehe und schreibe

ocamlbuild -use-jocaml foo.native

wird meine ausführbare Datei problemlos erzeugt.

In OcaIDE erhalte ich jedoch

/bin/sh: jocamldep: command not found

In OcaIDE wird die -use-jocaml Flagge im Feld "Andere Flaggen" (in den Projekteigenschaften) übergeben wird. Und das funktioniert auch, denn die Beschwerde ist ja gerade, dass jocaml nicht gefunden wird. Das Rätselhafte daran ist, dass jocaml installiert ist und von jedem beliebigen Terminalfenster aus aufgerufen werden kann. Zum Beispiel, wenn man

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

für mein Projekt erzeugt die gewünschte Abhängigkeitsdatei.

Es sieht also so aus, als müsste ich OcaIDE konfigurieren und ihm sagen, wo sich die ausführbaren Dateien von JoCaml befinden oder so. Das wird zum Beispiel für OCaml gemacht. Aber für JoCaml gibt es keinen Ort, an dem man das tun kann. Und es ist wirklich seltsam, dass, wenn jocamldep/jocamlc/etc von überall aus zugänglich sind, OcaIDE nicht in der Lage ist, sie auszuwählen.

Irgendwelche Ideen?

(Mir ist bewusst, dass ich ein ocamlbuild-Plugin erstellen und das Flag in einer Datei "myocamlbuild.ml" übergeben kann. Ich werde das wahrscheinlich in einem späteren Stadium verwenden, nachdem ich mich mit ocamlbuild-Plugins vertraut gemacht habe. Aber hier ist die Frage über OcaIDE. EDIT : Eigentlich scheinen die ocamlbuild-Plugins keine Lösung zu sein, denn obwohl es eine Option gibt -use-jocaml in ocamlbuild, um die Verwendung von jocaml zu erzwingen (und es funktioniert einwandfrei), unterstützt das Plugin-System dies nicht, d.h. use_jocaml (oder etwas, das jocaml beinhaltet) ist nicht in der Liste der Optionen .)

2voto

Teraokay Punkte 120

Wenn Sie einen Build für ein ocamlbuild-Projekt starten, ruft OcaIDE auf:

ocaml.exec.ExecHelper#execMerge

die eine new java.lang.ProcessBuilder und verwendet seine Standardumgebung ( ProcessBuilder#environment() ).

Um Ihr Problem zu beheben, führen Sie bitte das folgende Java-Programm in Ihrem Eclipse aus:

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());
        }
    }
}

Es sollte derselbe Pfad angezeigt werden, der an OcamlBuild übergeben wird.

Sie können auch den Quellcode des OcaIDE-Plug-ins in Ihren Arbeitsbereich importieren und es im Debug-Modus ausführen, mit einem Haltepunkt in ocaml.exec.ExecHelper#execMerge um zu sehen, wie ocamlbuild aufgerufen wird.


Sie könnten versuchen, ein Shell-Skript zu erstellen, um Eclipse mit dem richtigen Pfad zu starten:

Etwas wie startEclipse.sh (im selben Ordner wie die ausführbare Eclipse-Datei):

#!/bin/bash
export PATH=<your path to JoCaml>:$PATH
./eclipse

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X