带有子目录的 Oasis 构建配置

Oasis build configuration with subdirectories

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

OASISFormat: 0.4
Name:        Test
Version:     0.1
Synopsis:    no
Authors:     Me
License:     BSD-3-clause
Plugins:     META (0.4)

Executable abc
  Path:        src
  BuildTools:  ocamlbuild
  MainIs:      main.ml

现在我想将文件组织到子文件夹中,将 a.mli 和 a.ml 放入 src/util。这样做之后,模块对 ocamlbuild/ocamlc 不可见,导致 'unbound module A' 错误。如果我手动调用 ocamlc,我可以添加 -I src/util 标志以使 a.mli 再次可见。

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

您可以尝试将 <src/utils>: include 添加到您的 _tags 文件中(此文件由 oasis 生成,您无法在任何软件中编辑它:在生成部分的范围之外进行编辑。

这将直接告诉 ocamlbuild 添加一个 -I src/utils 到它的参数,我不认为如果不创建一个库就告诉 oasis 自己做这个是不可能的。

oasis 是不可能的,你需要修改你的 _tags 文件,但我不建议你这样做。一般的方法是在您的 oasis 文件中创建 Library 条目。这有助于保持项目结构整洁。如果你不想从 utils 创建一个库,那么为什么要费心把它移到一个子文件夹中。