OcaIDE не видит инструменты JoCaml - PullRequest
2 голосов
/ 15 марта 2011

У меня проблема при использовании OcaIDE в режиме ocamlbuild. Я пытаюсь скомпилировать мои собственные JoCaml исходники. Согласно руководству JoCaml (внизу страницы), чтобы использовать ocamlbuild с JoCaml, мне просто нужно добавить аргумент -use-jocaml в ocamlbuild. Действительно, если я пойду в корень своего проекта и напишу

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 . EDIT : На самом деле, плагины ocamlbuild, похоже, не являются решением, поскольку, хотя в ocamlbuild есть опция -use-jocaml для принудительного использования jocaml (и она работает нормально), система плагинов не поддерживать его, т.е. use_jocaml (или что-то, связанное с jocaml) отсутствует в списке options .)

1 Ответ

2 голосов
/ 17 марта 2011

Когда вы начинаете сборку проекта ocamlbuild, OcaIDE вызывает:

ocaml.exec.ExecHelper#execMerge

, который создает new java.lang.ProcessBuilder и использует среду по умолчанию (ProcessBuilder#environment()).

Чтобы помочь отладить вашу проблему, пожалуйста, запустите следующую программу Java в вашем Eclipse:

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#execMerge, чтобы увидеть, как вызывается ocamlbuild.


Вы можете попытаться создать сценарий оболочки для запуска Eclipse с правильным путем:

Что-то вроде startEclipse.sh (находится в той же папке, что и исполняемый файл eclipse):

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