OcaIDE没有看到JoCaml工具

时间:2011-03-15 20:58:53

标签: eclipse-plugin ocaml ocamlbuild

我在ocamlbuild模式下使用OcaIDE时遇到问题。我正在尝试编译自己的JoCaml来源。根据{{​​3}}(页面底部),要将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 。编辑:实际上,ocamlbuild插件似乎不是一个解决方案,尽管ocamlbuild中有一个选项-use-jocaml来强制使用jocaml(并且它工作正常),插件系统不支持它,即use_jocaml(或涉及jocaml的东西)不在JoCaml manual列表中。)

1 个答案:

答案 0 :(得分: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#execMerge中使用断点来查看ocamlbuild的调用方式。


您可以尝试使用正确的路径创建一个shell脚本来启动Eclipse:

类似于startEclipse.sh(与eclipse可执行文件位于同一文件夹中):

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