问题标签 [ocamlbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1320 浏览

ocaml - 告诉 ocamlbuild 使用 Core

在我的项目中,我有一个使用 Core.Std 东西的文件,所以我运行了

并添加

在我的档案中。

当我跑

它说:

指向与上面的 open 语句一致。

所以,我试试这个:

并收到以下消息:

所以我想也许我也需要运行 opam install core.std ,但是根据 opam 显然没有这样的事情。我也试过“打开 Core.Std;;” 在 ocaml repl 中,但这也不起作用。有任何想法吗?

0 投票
1 回答
425 浏览

ocaml - How to pass -S flag to ocamlopt with ocamlbuild?

I'd like to pass the -S flag to ocamlopt when building with the ocamlbuild and corebuild commands.

I understand doing ocamlbuild -cflag -S ... won't work since -S flag does only exist for ocamlopt and not ocamlc.

How can I do this using _tags files?

0 投票
1 回答
629 浏览

ocaml - 使用 ocamlbuild 构建库,使用 ocamlfind 安装它 - 最佳实践是什么?

我正在通过一个列出包含该库的模块的文件ocamlbuild来编译 OCaml库。mylib.mllib之后我想使用ocamlfind. 与使用 构建的二进制文件不同ocamlbuild,所有库文件都在_build目录中。是使用类似的东西安装它们的正确方法

ocamlbuild还是和之间有更好的整合ocamlfind?特别是,我注意到-install-lib-dirflagocamlbuild但找不到有关其用途的文档。

我知道oasis但现在想在 Makefile 和install目标中解决问题。所有这些都是在使用opam库管理器的上下文中,但讨论起来应该无关紧要。

0 投票
1 回答
314 浏览

interface - 在库中包含签名 (.mli) 文件

我有一个库,通用数据类型是在仅签名模块中定义的(将该签名复制到实现没有意义,因为它不包含任何功能):

在上面的设置中, ocamlbuild 无法创建库并出现一个相当令人惊讶的错误:

我可以在 mllib 文件中不指定 B 的情况下进行构建,但随后类型栏变得抽象(这不是有意的)。有没有办法使用 ocamlbuild包含签名?

0 投票
1 回答
1107 浏览

ocaml - 通过 ocamlbuild/ocamlfind 链接库

我有一个名为 ojasmine 的本地固定 OPAM 项目,我想将其编译为一个库,供另一个名为 test_tournabox 的项目使用(最终编译为 javascript)。但是,test_tournabox 的编译因链接错误而失败。

我编译 ojasmine 如下,给出目标 ojasmine.cma:

然后我像这样安装它:

我觉得奇怪的是 ojasmine.cma 不在我的项目目录中,而是在 _build 目录中。

输出是:

接下来,我cd到我的 tournabox 项目并尝试构建测试套件:

这失败并出现错误:

似乎 ojasmine.cma 没有链接到可执行文件 test_tournabox.byte。但我希望 ocamlfind 的 -linkpkg 参数可以安排这一点。我错过了什么?

编辑:这是 META 文件:

这是ocamlobjinfo:

ocamlfind 看到它:

这里是:

这是 ojasmine.ml:

和 ojasmine.mli:

0 投票
2 回答
331 浏览

ocaml - 带有子目录的 Oasis 构建配置

我正在使用 oasis 构建我的 ocaml 项目,源代码位于名为 src 的目录中。oasis 构建文件如下所示:

现在我想将文件组织到子文件夹中,将 a.mli 和 a.ml 放入 src/util。执行此操作后,该模块对 ocamlbuild/ocamlc 变得不可见,从而导致“未绑定模块 A”错误。如果我要手动调用 ocamlc,我可以添加 -I src/util 标志以使 a.mli 再次可见。

如何在不使文件成为完整库的情况下将其他路径添加到 oasis 配置?

0 投票
2 回答
1053 浏览

compiler-construction - 如何在 OCaml 编译器中遍历类型化抽象语法树

我正在尝试转储 OCaml 项目中所有标识符的类型信息,基本上它与遍历类型化抽象语法树相同(https://github.com/ocaml/ocaml/blob/trunk/typing/typedtree.mli) . 由于我是 OCaml 编译器代码库的新手,我不确定编译器是否提供了 api,因此我们可以轻松编写插件来完成这项工作,或者我们必须破解编译器代码?此外,这如何与 OCamlbuild 交互?感谢您的任何提示或建议。

0 投票
3 回答
286 浏览

ocaml - 如何为 OCaml 配置 _oasis 以设置“配置文件”标志

我在 OCaml 中有一个现有项目和一个_oasis文件。我不知道在哪里启用ocamlbuild.

我查阅了 Oasis 手册和代码,发现profilesetup.data 中有一个可用的变量。我认为这是 Oasis 自动生成的。

我应该在 _oasis 中包含哪些内容以设置profile为 true ?

0 投票
1 回答
259 浏览

ocaml - OCamlbuild 没有解决子目录依赖

我有一个 OCaml 项目,但遇到了一个奇怪的问题。

目录结构如下所示:

我正在这样构建它:

关键是,tests/test.ml 依赖于tests/templatetest.ml。

当我构建它时,我得到:

我尝试在顶级目录中添加一个 _tags 文件,其中包含:

这仍然产生了同样的错误。(我相信带有 _tags 文件的 ocamlbuild tests/test.native 与我之前使用的构建行完全相同。)

我还在 ./tests 和 ./src 中创建了一个空的 _tags 文件,但这也没有改变任何东西。

有什么建议么?如果您需要,整个来源都在这里。跑吧make test。谢谢!

0 投票
2 回答
3233 浏览

ocaml - 在 OCaml 中调用其他文件中的函数

我有一个具有长度函数的 hello.ml:

call.ml 使用该函数:

在解释器模式 (ocaml) 下,我可以使用ocaml call.ml来获取结果,但是当我尝试使用 ocamlc 或 ocamlbuild 编译它时,我得到了编译错误。

那么,如何修改caller、callee、build命令将代码编译成可执行文件呢?