Module 将一个ml文件导入另一个ml文件

Module 将一个ml文件导入另一个ml文件,module,compilation,ocaml,interpreter,ml,Module,Compilation,Ocaml,Interpreter,Ml,我有一个解释器.ml文件,其中包含一个解释器和一些类型定义 我开发了一些测试电池来检查解释器是否工作正常 当我将用于测试解释器行为的函数放在解释器的同一个文件中时,所有这些函数都工作得很好,但是如果我尝试使用不同的文件进行测试(比如tests.ml),它不会加载解释器函数和定义 解释器.ml和测试.ml在同一文件夹中 我从内部tests.ml尝试了使用open解释器和#使用“/Interpreter.ml”,但它不会编译或关闭IDE中的警告(有点……我在MacOs上使用的是Visual Stud

我有一个
解释器.ml
文件,其中包含一个解释器和一些
类型
定义

我开发了一些测试电池来检查解释器是否工作正常

当我将用于测试解释器行为的函数放在解释器的同一个文件中时,所有这些函数都工作得很好,但是如果我尝试使用不同的文件进行测试(比如
tests.ml
),它不会加载解释器函数和定义

解释器.ml
测试.ml
在同一文件夹中

我从内部
tests.ml
尝试了使用
open解释器
#使用“/Interpreter.ml”
,但它不会编译或关闭IDE中的警告(有点……我在MacOs上使用的是Visual Studio代码)


我已经尝试过遵循,但它不会使用
ocamlopt-c tests.ml编译。经过讨论,可以通过按正确的顺序编译两个文件
test.ml
&
解释器.ml
来获得可执行文件(
test.ml
依赖于
translator.ml
中定义的对象;因此
test.ml
必须通过子句
open-translator
或通过在所有相关项前面加上
translator
来引用解释器对象):

ocamlbuild
更容易,因为它可以自行解决依赖项: 以下命令:


将生成可执行文件。

根据讨论结果,可执行文件是通过按正确顺序编译两个文件
test.ml
&
解释器.ml
获得的(
test.ml
依赖于
translator.ml
中定义的对象;因此
test.ml
必须通过子句
open-translator
或通过在所有相关项前面加上
translator
来引用解释器对象):

ocamlbuild
更容易,因为它可以自行解决依赖项: 以下命令:


将生成可执行文件。

如果我理解正确,您的程序+测试被拆分为两个源文件,您尝试编译这两个文件以获得一个将执行测试的可执行文件。是否正确?为了简化编译过程,您是否使用了ocamlbuild?或者,您也可以使用实现了c等预处理器的cppopp;你可以用它来包含一些文件。@PierreG。你理解得很好。我没有使用ocamlbuild,因为我是ocaml的新手,这个项目是由两个文件组成的,似乎没有必要使用它来保持简单:ocamlc-o exe test.ml解释器.ml应该可以工作。在test.ml中:打开解释器。使用ocamlbuild:ocamlbuild test.ml就足够了(ocamlbuild处理依赖关系)。是否可以像在C中那样(
#include“path/of/the/file.ml
)并将解释器.ml的所有定义导入tests.ml?如果我理解正确,您的程序+测试被拆分为两个源文件,您尝试编译这两个文件以获得一个执行测试的可执行文件。是否正确?为了简化编译过程,您是否使用了OCAMLBILD?或者,您也可以使用cppo,即impElements是一个像cpp这样的预处理器;你可以用它来包含一些文件。@PierreG。你理解得很好。我没有使用ocamlbuild,因为我是ocaml的新手,这个项目只有两个文件,似乎没有必要使用它来保持简单:ocamlc-o exe test.ml解释器.ml应该可以工作。在test.ml中:打开解释器。使用ocamlbuild:ocamlbuild test.native应该足够了(ocamlbuild处理依赖关系)。是否可以在C中执行类似操作(
#包括“path/of/the/file.ml
)并将解释器.ml的所有定义导入tests.ml?
 ocamlc -o exec interpreter.ml test.ml
 ocamlbuild test.native