如何在 ocaml 文件中打开在项目根目录之外定义的模块?



我没有ocaml的经验,我在这里的情况是我正在编写我的ocaml代码,我尝试访问其他.ml文件中定义的类型,这些类型位于我的项目根目录之外。 我尝试设置_oasis,但是当我指定字段时,路径值无效,因为我尝试使用"../../目录"。有谁知道我怎样才能实现这一目标?我不想将它们复制到我的项目根目录中,因为我正在浏览这些教程,还没有找到解决方案,谢谢!

oasis 的想法是,在项目的根目录中有一个_oasis文件,该文件定义了整个项目。因此,所有路径都是相对于根文件夹(包含_oasis的文件夹(指定的

在您的情况下,项目结构可能如下所示:

my_project/
|
+- _oasis
+-lib/
| |
| +- types/
|    |
|    +- common.ml
+-src/
|
+- app/
|
+- app_main.ml

与之对应的_oasis文件将是:

OASISFormat: 0.4
Name:        myproject
Version:     0.1
Synopsis:    captures the world
Authors:     robots
Maintainers: humans
License:     MIT
Copyrights:  (C) Acme corp
Plugins:     META (0.4)
BuildTools: ocamlbuild

Library "common_types"
Path: lib/types
FindlibName: acme-common-types
Modules: Common
Executable "control-people"
Path: src/app
MainIs: app_main.ml
Install: true
BuildDepends: common_types

最后,由于 merlin 现在实际上是一个工具,您还应该考虑通过将.merlin文件添加到项目的根文件夹中来教他您的项目结构,其中包含以下内容:

B _build/
B _build/lib/types
B _build/src/app
S lib/types
S src/app

如果您有任何外部依赖项,则可以使用PKG <findlib-name-of-the-dep>将它们添加到.merlin中,例如PKG core_kernel。当然,您应该使用BuildDepends子句将外部依赖项添加到 _oasis 文件中的库和应用程序中,例如BuildDepends: core_kernel.

相关内容

  • 没有找到相关文章

最新更新